我计划与Google Spread一起管理服务器人员的信息。我想通过输入角色的名称从服务器人员中删除该角色。检查拼写错误。
电子表格的这一部分是完整的,但它并没有从分歧中删除自己的角色,已经尝试了几次搜索,但无济于事,留下了问题。
我需要帮助。
这是我的密码。
@bot.command()
async def removerole(ctx, team_name):
role = get(ctx.guild.roles, name=team_name)
team_mem = []
# type error check
role_list = ["TEAM_A", "TEAM_B", "TEAM_C", "TEAM_D"]
if role.name in role_list:
type_error = 1
else:
type_error = 0
cell_max = worksheet_list.acell('A1').value
range_list = worksheet_list.range('H2:H' + cell_max)
if type_error == 1:
for i, cell in enumerate(range_list):
#print(str(i) + " / " + cell.value)
if str(cell.value) == team_name:
temp = i + 2
data = worksheet_list.acell('H' + str(temp)).value
worksheet_list.update_acell('H' + str(temp), 'Any')
#print(temp, data)
if data == role:
team_mem.append(worksheet_list.acell('C' + str(temp)).value)
#await ctx.message.delete()
await ctx.send(content=f"{team_name} role has been removed")
else:
await ctx.send("Check the typos.")
empty = True
for member in ctx.guild.members:
if role in member.roles:
await ctx.guild.member.remove_roles(role)
empty = False
if empty == False:
await ctx.send("Anyone has this role")
您没有正确删除它,您应该引用member
而不是ctx.guild.member
,因为您已经从for循环中获得了成员。
for member in ctx.guild.members:
if role in member.roles:
await member.remove_roles(role)
注意:请确保启用intents。