首页 > 解决方案 > Discord.py raw_reaction_add 找不到成员

问题描述

我在 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")

标签: pythondiscorddiscord.py

解决方案


在新版本的 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)

推荐阅读