Ответить на сообщение discord.py

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

Мой код для ответа:

await ctx.message.reply("I just replied to you")

Я получаю сообщение об ошибке:

ctx.message has no attribute "reply"

Какой код я могу сделать, чтобы бот ответил на сообщение?

Когда я говорю «ответить», я имею в виду то же самое, что пользователь может нажать «ответить» в сообщении.

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
12
0
44 502
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

один из вариантов — использовать Cog.listener вы можете найти документацию по Cog.listener здесь, но чтобы ответить на ваш вопрос, я сделал свой Cog.listener следующим образом:

@bot.listen('on_message') 
async def stuff(message):

    if message.content.startswith("buttlerprefix"): # this tells the bot what to listen for. If a user types `buttlerprefix` in any text channel, it will respond with what's below
        msg = await message.channel.send("my prefix is `>`") # set the sending message equal to a variable so that you can manipulate it later like I did with the timer, and delete function below
        await asyncio.sleep(10) # tells the bot to wait 10 seconds before continuing below
        await msg.delete() # deletes the send message after 10 seconds

если у вас есть дополнительные вопросы или вы столкнулись с какими-либо ошибками, которых я здесь не вижу, свяжитесь со мной :)

Привет, когда я говорю «ответить», я имею в виду ответ, так как пользователь щелкает правой кнопкой мыши и нажимает «Ответить».

user13524876 15.12.2020 01:39

ах я тебя понял. Я прошу прощения, но я не уверен, как это можно сделать :( Я буду следить за этим, так что, если кто-то нашел способ, я тоже могу узнать что-то новое :)

shellbyy 16.12.2020 14:46

Попробуйте заменить строку на

await ctx.send('I just replied to you')

Нет, я знаю, что для отправки сообщения вы можете использовать это, но я хочу, чтобы оно специально отвечало на сообщение, например, когда вы щелкаете правой кнопкой мыши по сообщению и нажимаете «Ответить».

user13524876 15.12.2020 01:37

Какую версию discord.py вы используете? В документации сказано, что он был добавлен в версии 1.6.

Zeref 15.12.2020 11:40

Я не знаю, связано ли это со мной, использующим PyCharm, но, согласно ему, последняя версия discord.py — 1.5.1, так что, возможно, это еще не реализовано.

Zeref 15.12.2020 11:58

Discord.py пока не поддерживает новую функцию «ответить». К сожалению, вы не можете использовать функцию ответа, если они не добавили ее в библиотеку.

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

Любому новому пользователю здесь, начиная с обновления 1.6.0 discord.py-rewrite, теперь вы можете ответить!

Каждое сообщение или контекст теперь имеет атрибут ответа. Чтобы ответить, просто используйте

await ctx.reply('Hello!')

Также можно не упоминать автора в ответе mention_author=False

await ctx.reply('Hello!', mention_author=False)

Вы также можете найти базовый пример Здесь

Я получил сообщение об ошибке AttributeError: 'Context' object has no attribute 'reply', может кто-нибудь помочь?

Nicholas Chen 08.05.2021 04:23

@NicholasChen Вам нужно обновиться до discord.py 1.6

Frederick Reynolds 10.05.2021 22:28

Спасибо, я так и сделаю

Nicholas Chen 10.05.2021 22:53
@bot.event
async def on_message(message):
    if message.content == "hi":
        await message.channel.send("hello", reference=message)

Здесь главное reference=message. Он доступен начиная с Discord.py 1.6.

Подробнее: 1 , 2.

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