discord.py Выборка сообщений по содержимому

#python #asynchronous #discord #discord.py #python-asyncio

#python #асинхронный #Discord #discord.py #python-asyncio

Вопрос:

Я пытаюсь создать discord-бота для ролей реагирования. Для этого я пытаюсь использовать on_reaction_add в сочетании с fetch_message, чтобы проверить, была ли добавлена реакция на сообщение, отправленное ботом, но я продолжаю получать различные ошибки с помощью fetch_message. Вот код:

 @bot.command()
async def createteams(ctx):
    msg = await ctx.send("React to get into your teams")
    await msg.add_reaction("1️⃣")
    await msg.add_reaction("2️⃣")
    await msg.add_reaction("3️⃣")
    await msg.add_reaction("4️⃣")
    await msg.add_reaction("5️⃣")
    await msg.add_reaction("6️⃣")
    await msg.add_reaction("7️⃣")
    await msg.add_reaction("8️⃣")




@bot.event
async def on_reaction_add(reaction, user):
    id = reaction.message.id
    if await reaction.message.author.fetch_message(reaction.message.id) == "React to get into your teams":
        print("Success")

  

Это выдает ошибку

 Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "hypixel.py", line 60, in on_reaction_add
    fetch = await reaction.message.author.fetch_message(id)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/abc.py", line 955, in fetch_message
    channel = await self._get_channel()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/member.py", line 243, in _get_channel
    ch = await self.create_dm()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/member.py", line 109, in general
    return getattr(self._user, x)(*args, **kwargs)
AttributeError: 'ClientUser' object has no attribute 'create_dm'
  

Но когда я иду и копирую идентификатор сообщения, на которое я отреагировал, оно совпадает с печатной переменной id , но оно по-прежнему говорит, что сообщение не найдено

Спасибо

Комментарии:

1. Вы уверены, что вставили весь свой код? Похоже, вы пытаетесь вызвать несуществующую create_dm функцию где-то в вашем коде.

2. Это весь код, который имеет отношение к делу, но я не буду добавлять все это, если это поможет

3. его вызов create_dm из on_Reaction_add в соответствии с сообщением об ошибке

4. можете ли вы вставить полную трассировку стека?

5. Я вставил весь код

Ответ №1:

Я разобрался с проблемой, вы не можете использовать fetch_message с пользователем, это должен быть канал, поэтому я изменил свой код на

await reaction.message.channel.fetch_message(id) и это сработало 🙂