Почему гифки в дискорде отправляются ссылкой

Я пробовал каждый бит кода, который мог работать, но либо команда не загружается (в ней говорится, что бот печатает, а затем останавливается), либо сам бот не работает. Я использую Python.

Комментарии (3)

Есть ли ошибки? Что ты пробовал? Что именно вы хотите? См. Как мне задать хороший вопрос?

Ошибок точно нет, чаще всего случалось, что бот печатал в течение 5-10 секунд, а затем останавливался. Я пытался осмотреться, чтобы посмотреть, смогу ли я использовать какой-либо код, который оставили люди, но он никогда не работает . И я хочу, чтобы бот ответил на команду и прикрепил к ней изображение / гифку. Что-то вроде gyazo.com/f5b7f19612994232e237d795eb1d222d

Здесь — это ссылка на FAQ в discord.py документация. Здесь — это еще одна ссылка на сообщение в discord.py репозиторий GitHub. Может ли что-нибудь из этого помочь?

09.09.2018 05:17

Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Python — самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science.

Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это

Еще по теме:  Как создать дискорд без номера телефона

Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.

Ответы 1

Я знаю, что ваша проблема уже решена, но я опубликую ответ, чтобы люди, у которых возникла такая же проблема, могли легко найти решение.

Чтобы отправить изображение или GIF, есть два варианта (адаптировано из здесь):

    Открытие файла и отправка его прямо в канал:

with open(‘my_image.png’, ‘rb’) as f: picture = discord.File(f) await channel.send(file=picture)
await channel.send(file=discord.File(‘my_image.png’))

Вот несколько полезных ссылок:

  • discord.py документы
  • Связанные часто задаваемые вопросы по discord.py
  • discord.py репозиторий GitHub
  • Связанная запись discord.py на GitHub

Если вы изменяете бота, который отвечает на сообщения, вероятно, вы захотите использовать message.channel.send

Что, если изображение поступает с URL-адреса, а не с локального компьютера?

Источник: reddeveloper.ru

Как отправить GIF на канал Discord с помощью Python Discord Bot

Когда пользователь вводит команду ‘! Gif’ (где находится желаемый gif-файл), я хочу, чтобы бот возвращал gif-файл с этим именем.

Код, который я пробую, основан на API от Tenor, но я не против использовать и любой другой сайт для получения гифок. Текущий код, который у меня есть, не работает, и я немного не понимаю, как я могу это сделать.

Примечание: я делаю это как личный проект. Я не возражаю, если вы дадите мне ответ, но если можете, пожалуйста, объясните, почему вы делаете то, что сделали.

Спасибо за любую помощь!

DaMinato 27 Апр 2021 в 01:04

Вы печатаете (gif), но ничего не делаете для отправки этого GIF — вы должны увидеть документацию, как отправлять / вставлять файлы. Я не уверен, но перед отправкой может потребоваться сохранить файл на диске. В конце концов может потребоваться использовать io.BytesIO для создания фальшивого файла в памяти.

Еще по теме:  Как отправить другу файл через дискорд

27 Апр 2021 в 01:09

О, я надеялся, что мне не нужно будет сначала сохранять GIF на моем компьютере, но я думаю, что, возможно, мне придется в конце концов.

Thanushan S.
27 Апр 2021 в 01:10

Сначала вы должны найти информацию о том, как отправить изображение — т.е. send(file=filename) — а позже вы можете попробовать использовать io.BytesIO() (файловый объект) вместо filename . Некоторые функции (в разных модулях) могут работать с файловым объектом вместо filename

27 Апр 2021 в 01:12

Используя Gooogle, я нашел пример, который отправляет изображение из файла на диск и использует обработчик для открытого файла, а это означает, что вы можете использовать io.BytesIO() вместо обработчика.

27 Апр 2021 в 01:14
Thanushan S.
27 Апр 2021 в 01:22

1 ответ

Лучший ответ

Я проверил ваш код, и Tensor отправляет не данные GIF, а только URL-адреса изображений.

Этот код дает мне url вместо gif в первом результате`

def get_gif(searchTerm): # PEP8: lower_case_names for functions response = requests.get(«https://g.tenor.com/v1/search?q=<>>.format(searchTerm, TenorToken)) data = response.json() # `requests` doesn’t need `json.loads()` return data[‘results’][0][‘media’][0][‘gif’][‘url’]

Я получаю это, вручную копаясь в JSON и создавая этот код

# see urls for all GIFs for result in data[‘results’]: print(‘- result -‘) #print(result) for media in result[‘media’]: print(‘- media -‘) #print(media) #print(media[‘gif’]) print(‘url:’, media[‘gif’][‘url’])

И когда я получаю url , я могу использовать Embed для отправки url , и Discord загрузит его и отобразит — мне не нужно его загружать.

if (message.content.lower().startswith(f»gif»)): gif_url = get_gif(message.content.lower()[5:]) #Collects word after !gif embed = discord.Embed() embed.set_image(url=gif_url) await message.channel.send(embed=embed)

Полный рабочий код

РЕДАКТИРОВАТЬ:

То же самое с загрузкой gif в память локального компьютера (с использованием io.BytesIO ) и отправкой как обычного файла.

Еще по теме:  Как накрутить человек в дискорд

Ему требуется больше времени для отображения, потому что он должен доставить его на локальный компьютер, а затем отправить в Интернет.

Его можно использовать для редактирования изображения (например, добавления текста, изменения цвета, рисования фигур) с помощью подушка, палочка, gizeh, обнаружение лиц / людей / объектов с помощью opencv , создание видео с помощью moviepy и т. д.

Кстати:

Отвечая на вопрос Как создать карточку профиля холста в боте Python Discord? Я использую pillow для добавления элементов изображать. Но это статическое изображение, а не анимированный GIF, который потребует дополнительной работы (с каждым кадром отдельно).

Источник: question-it.com

Gif не хочет вставляться в embed, что делать?

image.png

В итоге бот отправил вот такой Embed:

Гифку никто не видит, у всех бессконечная загрузка, что делать?

  • Вопрос задан 24 нояб. 2022
  • 143 просмотра

1 комментарий

Простой 1 комментарий

botermain

В дискорд ботах не шарю, но ты же ему не сурс дал, а ссылку на страницу, конечно он тебе не даст изображения.
Попробуй дать ему прямую ссылку:

embedfortune = disnake.Embed(color=0x228b22).set_image(url=»https://media.tenor.com/fJ10v8TLEi0AAAAC/wheel-of-fortune.gif») await ctx.send(embed=embedfortune)
Решения вопроса 0
Ответы на вопрос 1
замени ссылку на эту
https://media.tenor.com/fJ10v8TLEi0AAAAC/wheel-of-fortune.gif

ссылка которая у тебя в коде ведёт на сам сайт тенора, где не только гифка.

Ответ написан 16 дек. 2022
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

discord-py

  • discord.py

Почему бот не может найти профиль игрока?

  • 1 подписчик
  • 05 июн.
  • 40 просмотров

discord-py

  • discord.py

Возможно ли как-то дискорд-боту выдать высшую роль или ещё выше участнику сервера?

  • 1 подписчик
  • 04 июн.
  • 39 просмотров

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...