Discord.py raw_reaction_add не найдет участника

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я написал этот код в Discord.py Версия API 1.4, и все работает нормально. Теперь я попытался импортировать его в свой новый код 1.5, и он больше не работает. «404 участник не найден».

Я не смог найти никаких изменений в API, поэтому мне любопытно, почему он больше не работает.

 @bot.event
async def on_raw_reaction_add(payload):
    message_id = payload.message_id
    if message_id == 768180630218342411:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g: g.id == guild_id, bot.guilds)
        if payload.emoji.name == 'testemoji':
            role = discord.utils.get(guild.roles, name='testrolle')
        elif payload.emoji.name == 'emojitest':
            role = discord.utils.get(guild.roles, name='rolletest')
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
            #member = guild.get_member(payload.user_id)
            if member is not None:
                await member.add_roles(role)
                print("done")
            else:
                print("404 no member found")
        else:
            print("404 no group found")

  

Ответ №1:

В новой версии discord.py , то есть 1.5.1, о котором есть обновление Intents . Вероятно, именно поэтому вы не смогли получить участников с помощью discord.utils.get . Вам нужно определить Intents в начале вашего кода, прежде чем определять bot = commands.Bot(prefix='') :

 import discord

intents = discord.Intents().all()
bot = commands.Bot(command_prefix='', intents=intents)
  

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

1. Теперь я получаю следующую ошибку: discord.errors. Запрещено: 403 Запрещено (код ошибки: 50013): отсутствуют разрешения, и я установил для ботов права администратора с помощью Oauth.

2. Вот и все, приятель.

3. Извините, я понятия не имею, в чем проблема.

4. все в порядке, я разберусь с этим в один прекрасный день. : D я хотел бы проголосовать за ваш ответ, но у меня недостаточно репутации. извините.

Ответ №2:

Nurqm направил вас на правильный путь. Код правильный. Вы также должны прочитать больше о намерениях здесь.

Из ваших комментариев кажется, что вы не включили намерения с веб-сайта discord для приложений. Там также должна быть включена ссылка Intents.

Добавление кода из Nurqm.

 import discord
intents = discord.Intents.all()
...

bot = commands.Bot(command_prefix='', intents=intents)