将角色更改为所有服务器成员
Posted
技术标签:
【中文标题】将角色更改为所有服务器成员【英文标题】:change role to all server members 【发布时间】:2019-09-09 18:15:28 【问题描述】:我想创建一个不和谐机器人,在收到管理员的消息后,将所有服务器成员(不包括管理员)的角色从@everyone 更改为@newrole。
我试过这段代码,但有一个错误:
角色 = discord.utils.get(server.roles, name="newrole") AttributeError:“NoneType”对象没有属性“角色”
我使用最新版本的 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)
【问题讨论】:
【参考方案1】:所有成员始终拥有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)
【讨论】:
我试过这段代码但是有一个错误:role = discord.utils.get(message.guild.roles, name="@newrole") AttributeError: 'NoneType' object has no attribute 'roles ' 您是否正在向机器人发送私人消息以触发命令?然后它就不会知道在哪个服务器上进行操作。 是的,我从管理员向机器人发送了一条私人消息 您的代码是否有server
的定义,您可以使用它来代替message.guild
?
不,它没有......我怎样才能做到?以上是关于将角色更改为所有服务器成员的主要内容,如果未能解决你的问题,请参考以下文章