Я хочу, чтобы мой бот реагировал на сообщения пользователей, когда они вводят определенное предложение.
Мой код для ответа:
await ctx.message.reply("I just replied to you")
Я получаю сообщение об ошибке:
ctx.message has no attribute "reply"
Какой код я могу сделать, чтобы бот ответил на сообщение?
Когда я говорю «ответить», я имею в виду то же самое, что пользователь может нажать «ответить» в сообщении.
один из вариантов — использовать 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
если у вас есть дополнительные вопросы или вы столкнулись с какими-либо ошибками, которых я здесь не вижу, свяжитесь со мной :)
ах я тебя понял. Я прошу прощения, но я не уверен, как это можно сделать :( Я буду следить за этим, так что, если кто-то нашел способ, я тоже могу узнать что-то новое :)
Попробуйте заменить строку на
await ctx.send('I just replied to you')
Нет, я знаю, что для отправки сообщения вы можете использовать это, но я хочу, чтобы оно специально отвечало на сообщение, например, когда вы щелкаете правой кнопкой мыши по сообщению и нажимаете «Ответить».
Какую версию discord.py вы используете? В документации сказано, что он был добавлен в версии 1.6.
Я не знаю, связано ли это со мной, использующим PyCharm, но, согласно ему, последняя версия discord.py — 1.5.1, так что, возможно, это еще не реализовано.
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'
, может кто-нибудь помочь?
@NicholasChen Вам нужно обновиться до discord.py 1.6
Спасибо, я так и сделаю
@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.
Привет, когда я говорю «ответить», я имею в виду ответ, так как пользователь щелкает правой кнопкой мыши и нажимает «Ответить».