猿问

Discord 机器人不会分配角色

我完全按照他的方式进行编码,除了警告之外没有任何错误,Parameter 'payload' value is not used 并且我已确保:

  1. 机器人具有分配角色的适当权限

  2. 机器人已上线

  3. 表情符号和角色具有相同的名称

这是供参考的代码:

import discord

client = discord.Client()



@client.event

async def on_message(message):

    if message.author == client.user:

        return



@client.event

async def on_raw_reaction_add(payload):

    message_id = payload.message_id


    if message_id == '756794977148993597':

        guild_id = payload.guild_id

        guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)


        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("done")

            else:

                print("member not found")

        else:

            print("role not found")

 

client.run('REDACTED')

 

我已经尝试了很多故障排除,任何帮助将不胜感激!


跃然一笑
浏览 1399回答 1
1回答

斯蒂芬大帝

你不应该utils.find在你的情况下使用。client.get_guild通过 id 获取公会。guild.get_member通过 id 获取成员。guild.get_member_named如果您想使用名称,也可以使用。@client.eventasync def on_raw_reaction_add(payload):    if payload.message_id == 756794977148993597:        guild = client.get_guild(payload.guild_id)        role = discord.utils.get(guild.roles, name=payload.emoji.name)        if role is not None:            member = guild.get_member(payload.user_id)            if member is not None:                await member.add_roles(role)                print("done")            else:                print("member not found")        else:            print("role not found")
随时随地看视频慕课网APP

相关分类

Python
我要回答