尝试使用discord.py创建反应机器人时,我没有任何结果

时间:2020-10-22 18:44:03

标签: python discord discord.py

我的代码是:

@client.event
async def on_raw_reaction_add(payload):

    message_id = payload.message_id
    if message_id == 768549092674502666:
        if payload.emoji.name == 'white_check_mark':
            role = '<:Member:765291826151555104>'
            await member.add_role(role)

我没有从调试器得到任何结果,除非机器人添加了一个反应或登录信息,而这部分代码与该部分代码完全不符。

1 个答案:

答案 0 :(得分:1)

在新版本的discord.py(1.5.x)中,对Intents进行了一些更新。意图类似于权限,并且为了使用某些事件或获取成员,频道等,您需要先定义它,然后再定义client = discord.Bot(prefix='')

然后,您需要定义member来添加角色。您只需执行member = payload.member

而且您还需要在discord.utils.get()中扮演角色。您无法使用字符串定义角色。

import discord

intents = discord.Intents().all()
client = discord.Bot(prefix='', intents=intents)


@client.event
async def on_raw_reaction_add(payload):
    if payload.message_id == 768549092674502666 and payload.emoji.name == 'white_check_mark':
        guild = client.get_guild(guild id)
        role = discord.utils.get(guild.roles, name="role's name")
        await payload.member.add_roles(role)



如果要获取有关Intent的更多信息,可以检查API References