有没有办法通过反应添加特定角色?
在这方面没有任何来源帮助我。
我希望有关于如何操作的想法或建议。
答案 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)