我的代码是:
@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)
我没有从调试器得到任何结果,除非机器人添加了一个反应或登录信息,而这部分代码与该部分代码完全不符。
答案 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