将角色更改为所有服务器成员

问题描述 投票:0回答:1

我想创建一个不和谐机器人,在收到来自管理员的消息后,将所有服务器成员(不包括管理员)的角色从@everyone更改为@newrole。

我试过这段代码,但是有一个错误:

role = discord.utils.get(server.roles,name =“newrole”) AttributeError:'NoneType'对象没有属性'roles'

我使用最新版本的discord和Python 3.6。

server = client.get_guild(int(server-id))

@client.event
async def on_message(message):
if message.content.startswith('change role'):
    await message.author.send("Change the role from @everyone to @newrole")
    role = discord.utils.get(server.roles, name="newrole")
    for member in server.members:
        await member.add_roles(role)
python discord.py
1个回答
0
投票

所有成员在任何时候都有everyone角色。但是,成员可以拥有多个角色,因此您也可以为他们提供新角色。批量分配角色没有协程,因此您必须按成员成员执行:

@client.event
async def on_message(message):
    if message.content.startswith('change role'):
        await message.author.send("Change the role from @everyone to @newrole")
        role = discord.utils.get(message.guild.roles, name="newrole")
        for member in message.guild.members:
            await member.add_roles(role)
© www.soinside.com 2019 - 2024. All rights reserved.