【问题标题】:How to make give role on_message in discord.py?如何在 discord.py 中赋予角色 on_message?
【发布时间】:2020-09-01 15:59:31
【问题描述】:

如果用户在特定频道中提到三个人,我希望机器人为用户赋予角色,我想用 2 个频道执行此操作,并且两个频道的角色不同, 代码:

@client.event
async def on_message(message):
    if message.channel.id ==  724969989777522778:
        try:
            if len(message.mentions) >= 3:
                await message.add_reaction(emoji="<a:tick:748476262640779276>")
                role = discord.utils.get(message.guild.roles, name="CUSTOM 3pm")
                user = message.author
                await user.add_roles(role)
                #await.message.add_reaction(emoji="<a:zw40:738102925339000873>")
            else:
                return
        except:
            return
    if message.channel.id == 724970270347100203:
        try:
            if len(message.mentions) >= 3:
                await message.add_reaction(emoji="<a:tick:748476262640779276>")
                role = discord.utils.get(message.guild.roles, name="CUSTOM 4pm")
                user = message.author
                await user.add_roles(role)
                #await.message.add_reaction(emoji="<a:zw40:738102925339000873>")
        except:
            return

    await client.process_commands(message)

这也没有给出任何错误它不起作用。我找不到任何错误。

【问题讨论】:

  • 使用 try-except 会隐藏所有抛出的异常。去掉这两种情况的try-except,看看有没有错误出现
  • 我没有发现任何错误,您很可能收到 403。就像 wxker 所说,删除 try-except 以便您能够看到错误。

标签: python discord discord.py


【解决方案1】:

我认为你的错误在于表情符号本身,确保它在公会中,我对其进行了一些编辑。

@bot.event
async def on_message(message):
    if message.channel.id == 724969989777522778 or message.channel.id == 724970270347100203:

        if len(message.mentions) >= 3:
            role_name = "CUSTOM 3pm" if message.channel.id == 724969989777522778 else "CUSTOM 4pm"
            await message.add_reaction(emoji='✅')
            role = discord.utils.get(message.guild.roles, name=role_name)
            user = message.author
            try:
                await user.add_roles(role)
            except:
                print('Already have the role')

    await bot.process_commands(message)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2019-02-12
    • 2019-10-19
    • 2019-05-31
    • 2021-11-02
    相关资源
    最近更新 更多