Discord Py - 如何使用文本命令向公会的所有成员添加多个角色

Posted

技术标签:

【中文标题】Discord Py - 如何使用文本命令向公会的所有成员添加多个角色【英文标题】:Discord Py - How to add multiple roles to all members on guild with text command 【发布时间】:2021-02-01 22:13:27 【问题描述】:

如何为所有用户添加多个角色?我编码的内容没有产生错误,但它不起作用。我正在尝试遍历 discord 公会的所有成员,然后将指定的角色添加到每个成员。

    member = message.author
    cat1 = discord.utils.get(member.guild.roles, id=767162794125557760)
    cat2 = discord.utils.get(member.guild.roles, id=767159884314574888)
    cat3 = discord.utils.get(member.guild.roles, id=767160508637642793)
    cat4 = discord.utils.get(member.guild.roles, id=767159426565013504)
    cat5 = discord.utils.get(member.guild.roles, id=767159149040500807)

    if message.content.startswith('!addroles'):
        if message.author.id == 80760379319259136:
            for person in message.guild.members:
                await person.add_roles(cat1, cat2, cat3, cat4, cat5)
            print("done.")

【问题讨论】:

【参考方案1】:

代码对我来说非常好:

@client.command()
async def addroles(message):

    member = message.author
    cat1 = discord.utils.get(member.guild.roles, id=767658943442583573)
    cat2 = discord.utils.get(member.guild.roles, id=767658997607170069)

    for person in message.guild.members:
        await person.remove_roles(cat1, cat2)
        print(person)
    print("done.")

尝试在 for 循环中打印出每个人。也许您的 if 陈述被证明是错误的,例如提供了错误的作者 ID,因此不会执行 for 循环。

也尝试使用命令而不是检查消息内容:

client = commands.Bot(command_prefix="!")

@client.command()
async def addroles(message):
    pass

【讨论】:

以上是关于Discord Py - 如何使用文本命令向公会的所有成员添加多个角色的主要内容,如果未能解决你的问题,请参考以下文章

公会加入事件打印机器人被邀请 - Discord.py

我想创建一个黑名单命令来阻止来自特定公会 discord.py 的邀请

如何从特定频道狙击消息(discord.py)

为啥 Discord API 返回错误 405 以向公会添加斜杠命令?

试图获取公会中的所有成员(discord.py 重写)

在 discord.py 中,on_message 不会为一个公会触发