簡體   English   中英

Python Discord 機器人 - 反應角色

[英]Python Discord Bot - Reaction Role

我將如何制作反應角色事件。 這是我嘗試過的代碼

@client.event
async def on_raw_reaction_add(payload):
    msgID = 05793080854315018
    if payload != None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "✍️":
                await add_roles("cool")

我想做的是讓我的機器人檢查對特定消息的反應,然后如果用戶對正確的表情符號做出反應,就給他們一個角色。

假設您使用的是discord.py 1.3.3 ,您可以使用以下代碼更新您的代碼,以添加基於特定表情符號的角色。

您需要添加對公會的引用才能引用您希望添加的角色。 您還需要將表情符號與payload.emoji的字符串表示進行比較。 可能值得考慮使用emoji.demojize

嘗試:

@client.event
async def on_raw_reaction_add(payload=None):
    msgID = <your message id: int>
    guild = discord.utils.get(client.guilds, name=<your guild name>)
    role = discord.utils.get(guild.roles, name='cool')
    if payload is not None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "✍️":
                await payload.member.add_roles(role)

我刷新了您的代碼,但它仍然無法正常工作,所以如果有人可以幫助我也在尋找解決方案,首先您導入不和諧的庫;

import discord
from discord.client import Client
from discord.ext import commands

#如果代碼稍后會發展,我還會添加一個前綴:

bot = commands.Bot(command_prefix='!')

#這里我們收到一條消息,告訴機器人在線

@bot.event
async def on_ready():
    print("Bot Is entered the building!")

#那么這里是代碼;

@bot.event
async def on_raw_reaction_add(payload=None):
    msgID = 9454546465646847898,
    guild = 7894651646646464898,
    role = discord.utils.get(guild.roles, name='lvl 0 Test bot')
    if payload is not None:
        if payload.message_id == msgID:
            if str(payload.emoji) == ":yes:":
                await payload.member.add_roles(role)


    bot.run("BOT TOKEN ID")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM