服务器角色操作
# 1.给用户上角色
给用户上角色有多种方法,你可以直接传入用户id和角色id,也可以先获取用户对象后,再将其传入接口中
# 方法1,都使用ID
guild = await bot.client.fetch_guild("服务器ID")
await guild.grant_role("用户id",100) # 第二个参数是角色id
方法2,使用用户对象,传入grant_role
方法中。
# 方法2,使用用户ID
guild = await bot.client.fetch_guild("服务器ID")
guild_user = await guild.fetch_user("用户ID")
await guild.grant_role(guild_user,role_id) # 第二个参数是角色id
在上角色之前,你可以先判断一下用户是否已经拥有了该角色,这样能减少一次无效调用
guild = await bot.client.fetch_guild("服务器ID")
guild_user = await guild.fetch_user("用户ID")
# 用户缺少该角色才给他上
if role_id not in guild_user.roles:
await guild.grant_role(guild_user,role_id) # 第二个参数是角色id
方法3,user和role都使用对象来传参
# 方法3,使用用户对象和角色对象
role_id = 100 # 假设这是一个角色id
guild = await bot.client.fetch_guild("服务器ID")
guild_user = await guild.fetch_user("用户ID")
guild_roles = await guild.fetch_roles()
# 用户缺少该角色才给他上
if role_id not in guild_user.roles:
for role in guild_roles:
if role.id == role_id: # 是我们的目标role_id
await guild.grant_role(guild_user,role)
break
很明显,方法3非常复杂,这仅限于你已经获取了服务器角色列表的情况下,才使用这种方式调用。
绝大部分情况下,直接传入用户ID和角色ID是更好的选择。
# 2.给用户下角色
下角色和上角色的操作基本一致,参数也能接受ID或对象,这里就不做演示了。
await guild.revoke_role("用户ID",100) # 第二个参数是角色ID
该函数的返回值示例如下
{'user_id': '用户ID', 'guild_id': '服务器ID', 'roles': [被下掉的角色ID(int)]}
# 3.更新角色信息
khl.py中,更新角色信息的逻辑如下
- 获取Guild对象
- 获取Guild内Role列表,并从中取出你需要更新的Role对象
- 直接对Role对象的成员进行操作
- 调用update_role更新该角色信息
role_id = 100 # 假设这是一个角色id
guild = await bot.client.fetch_guild("服务器ID")
guild_roles = await guild.fetch_roles()
# 找到我们需要处理的角色对象
for role in guild_roles:
if role.id == role_id: # 是我们的目标role_id
# 对这个role的成员进行修改
...
# 更新角色信息
await guild.update_role(role)
break
# 4.创建角色
创建角色的参数只有角色名字,并没有更详细的设置项目。
guild = await bot.client.fetch_guild("服务器ID")
role = await guild.create_role("角色名字")
guild.create_role函数的返回值是一个Role对象,你可以在获取这个对象之后,对成员进行操作,编辑你需要的角色信息,再使用guild.update_role函数更新角色信息。
上次更新: 2024/02/16, 02:13:48