当用户添加反应不一致时给予角色。 [英] give role when a user add reaction Discord.py

查看:13
本文介绍了当用户添加反应不一致时给予角色。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为我的不和谐频道开发一个机器人,在做的同时我正在学习python,我想在用户添加反应时给出角色我想出的代码是

@client.event
async def on_reaction_add(reaction, user):
    ChID = '487165969903517696'
    if reaction.message != ChID:
        return;
    if user.reaction.emoji == "🏃":
        CSGO = discord.utils.get(user.server.roles, name="CSGO_P")
        await client.add_roles(user, CSGO)

但它不起作用我基本上想要的是,我在一个频道ID为487165969903517696的频道中发送了一条消息,然后我的机器人发送了一条带有"Role=emoji"内容的嵌入消息。像CSGO=:Runner:,然后将这些反应表情符号添加到它的消息(嵌入)现在我想说,如果用户点击其中一个表情符号,机器人必须给他/她一个类似CSGO_P的角色

顺便说一句,我一开始想出了一个on_Message事件,它运行得很好,但我认为如果他们添加反应而不是打字,例如!CSGO和我刚刚开始使用Python(两天前)

推荐答案

on_reaction_add事件受到一些限制,因为它只由Client.messages出队中存储的消息触发。这是一个缓存(默认大小为5000),可阻止您的机器人响应旧消息上的活动。不能保证,如果您重新启动您的机器人,它是否仍会查看该消息。

您可以做的一件事是在您的机器人登录时发送一条消息,并将角色添加到对该消息做出反应的用户

@bot.event
async def on_ready():
    channel = bot.get_channel('487165969903517696')
    role = discord.utils.get(user.server.roles, name="CSGO_P")
    message = await bot.send_message(channel, "React to me!")
    while True:
        reaction = await bot.wait_for_reaction(emoji="🏃", message=message)
        await bot.add_roles(reaction.message.author, role)

这篇关于当用户添加反应不一致时给予角色。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆