【问题标题】:How to make a discord.py reaction role code如何制作discord.py反应角色代码
【发布时间】:2020-09-20 01:47:31
【问题描述】:

我是不和谐机器人制作的新手,我想让机器人在我的消息中添加一个反应,一旦按下该反应,用户就可以做出反应来选择一个角色。允许我这样做的代码是什么?谢谢。

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    这是一个写得很好,格式也很好的问题!为了让机器人检测到对特定消息的反应,您可以采取多种方式。最简单的方法是通过 ID,所以我将使用一个简单的命令来执行此操作。

    messageIDs = []
    
    @client.event
    async def on_raw_reaction_add(payload):
        global messageIDs
    
        for messageID in messageIDs:
            if messageID == payload.message_id:
                user = payload.member
                role = "roleName"
                await user.add_roles(discord.utils.get(user.guild.roles, name = role))
    
    @client.command()
    async def addMessage(ctx, messageID):
        global messageIDs
        
        emoji = "?"
        channel = ctx.message.channel
    
        try:
            msg = await channel.fetch_message(messageID)
        except:
            await ctx.send("Invalid Message ID!")
            return
        await msg.add_reaction(emoji)
        messageIDs.append(messageID)
    

    【讨论】:

    • 我不知道我做错了什么,但这是我的代码 - gyazo.com/84543de0d7544646c499861469ffa4e3。但是,当我运行机器人时它会这样说: Traceback(最近一次调用最后一次):文件“C:\Users\james\Desktop\CustomBot.py”,第 18 行,在 @client.event NameError: name '客户'未定义
    • 抱歉,我稍微更改了代码并让它运行,但是当人们做出反应时,它并没有添加反应或做任何事情。 gyazo.com/43eaf3cebb013fa62e5ba1b414de8519 是我的代码,但反应没有做任何事情
    • 抱歉,我的代码有很多错误。我已经编辑了我的代码,现在应该很好了!
    • 再次抱歉,除了discordfrom discord.ext import commands,我还需要在开头导入什么吗?我这样说是因为这是我设置的代码 - gyazo.com/60a88b1fabd762f1430319a304e97c01,但是当我运行代码时,它会说:gyazo.com/d94d2fc46c73b97f30dbf6cc3b92ee98。很抱歉再次打扰您。
    • 是的,你需要像这样导入 discord utils:from discord.utils import get 抱歉回复晚了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2021-04-02
    • 2021-10-10
    • 1970-01-01
    • 2021-04-28
    • 2021-04-18
    相关资源
    最近更新 更多