添加反应时如何添加角色?不和谐.py

时间:2021-05-07 06:20:30

标签: python discord.py

有没有办法通过反应添加特定角色?

在这方面没有任何来源帮助我。

我希望有关于如何操作的想法或建议。

2 个答案:

答案 0 :(得分:0)

您可以使用 on_reaction_add。这只会在消息仍在机器人消息缓存中时触发。考虑改用 on_raw_reaction_add(payload)

@bot.event
async def on_ready():
    channel = bot.get_channel(YOUR_CHANNEL_ID)
    messageobj = await channel.send('react to this message to get a role')
    await messageobj.add_reaction('?')

@bot.event
async def on_raw_reaction_add(payload):
    channel = bot.get_channel(YOUR_CHANNEL_ID)
    if payload.message.channel.id != channel:
        return
    if reaction.emoji == "?":
        role = discord.utils.get(reaction.message.guild.roles, name="YOUR_ROLE_NAME_HERE")
        await user.add_roles(role)

答案 1 :(得分:0)

在这种情况下,您可以使用 on_raw_reaction_add(),当有人对加载到缓存中的消息做出反应时触发。随着用户对其作出反应的消息在他对其作出反应时被加载到缓存中,这是有效的。

Suvan 为例:

@bot.event
async def on_ready():
    channel = bot.get_channel('YOUR_CHANNEL_ID')
    messageobj = await channel.send('react to this message to get a role')
    await messageobj.add_reaction('?')

@bot.event
async def on_raw_reaction_add(payload):
    global messageobj

    if payload.message_id != messageobj.id:
        return

    if payload.emoji.name == "?":
        role = discord.utils.get(bot.get_guild(payload.guild_id).roles, name="YOUR_ROLE_NAME_HERE")
        await payload.member.add_roles(role)