Проблема с отправкой файла через бота Discord (Python)

if message.content.upper().startswith("!HEADPATS"):
    time.sleep(1)
    with open('tenor.gif', 'rb') as picture:
      await client.send_file(channel, picture)

У меня есть бот-дискорд (все написано на питоне). Я пытаюсь заставить бота отправлять .gif на канал по команде "! Headpats". Файл загружен, и код компилируется нормально, но когда команда! Headpats вызывается через discord, компилятор выплевывает это ...

File "main.py", line 106, in on_message
    await client.send_file(channel, picture)
NameError: name 'channel' is not defined

Вам нужно разрешить канал через сообщение: message.channel. Где-то здесь есть дубликат.

Patrick Haugh 18.09.2018 21:43

@PatrickHaugh stackoverflow.com/a/51468829/3271649 Думаю, вот оно ...

Ctrl S 18.09.2018 21:47

@PatrickHaugh Это все исправило. Спасибо за помощь!

impulse.php 18.09.2018 21:48
Это самое близкое, что я смог найти, что на самом деле не очень хороший дубликат. Напишу правильный ответ.
Patrick Haugh 18.09.2018 21:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
738
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все, что вы получаете в своем событии on_message, - это полученный Message. Если вы хотите вывести channel, в котором он находится, server, который он записал, author, который его написал, и т. д., Вам придется разрешить эти атрибуты через message. (message.channel, message.server и т. д.).

Если вы используете расширение discord.ext.commands, вам сначала нужно разрешить сообщение как атрибут контекст вызова: ctx.message.channel, например.

Другие вопросы по теме