【问题标题】:Reaction Role Discord.py反应角色 Discord.py
【发布时间】:2020-07-02 20:30:37
【问题描述】:
@client.event
async def on_raw_reaction_add(payload):
    message_id = payload.message_id
    if message_id == 728213540858757152:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
        if payload.emoji.name == "loud_sound":
            role = discord.utils.get(message_id.guild.roles, name="DUYURU")
        elif payload.emoji.name == "bee":
            role = discord.utils.get(guild.roles, name="REKLAM")
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
            if member is not None:
                await member.add_roles(role)
                print(f"{member} {role} aldı!")
            else:
                print("Member not found")
        else:
            print("Role not found")

@client.event
async def on_raw_reaction_remove(payload):
    message_id = payload.message_id
    if message_id == 728213540858757152:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
        if payload.emoji.name == "loud_sound":
            role = discord.utils.get(guild.roles, name="DUYURU")
        elif payload.emoji.name == "bee":
            role = discord.utils.get(guild.roles, name="REKLAM")
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
            if member is not None:
                await member.remove_roles(role)
                print(f"{member} {role} aldı!")
            else:
                print("Member not found")
        else:
            print("Role not found")

我正在尝试在我的 discord.py 机器人中添加反应角色,但它不起作用。它给了我错误:Role not found。但是我的角色列表中已经有了这个角色。我尝试使用我制作的另一个与角色相关的代码,它可以完美运行,但这也不起作用。我尝试将message_id 更改为channel,但这也不起作用

【问题讨论】:

  • 很明显,您的discord.utils.get 之一失败了,您得到“找不到角色”

标签: python discord.py


【解决方案1】:

根据docs 进行了一些更改 on_reaction_add 有 2 个参数,reaction, user,这会将您的事件侦听器更改为 async def on_reaction_add(reaction, user)

其次,通过object.id 获取对象的 id,因此您可以使用guild = reaction.message.guild.id

第三,你可以使用bot.get_guild(id)获取公会,但你不需要这样做,因为你可以从reaction.message.guild获取。

【讨论】:

  • 不,改变你所说的一切后,它没有工作
  • @Mr.Beanos.-你现在遇到什么错误,还是没有找到角色吗?
  • 不,它什么也没说
  • 尝试添加断点并打印输出。找出它到底在哪里坏了。
  • 我在每一行代码中都添加了打印,但没有一个响应。你能编辑它应该工作的代码吗?
猜你喜欢
  • 1970-01-01
  • 2021-03-16
  • 2021-04-02
  • 2021-10-10
  • 2021-04-18
  • 2020-10-03
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
相关资源
最近更新 更多