我打算与 Google Spread 一起管理服务器人员的信息。 我想通过输入角色名称从服务器人员中删除角色。 检查错别字。
电子表格的部分是完整的,但它并没有从discord中删除它的作用,尝试了几次搜索,但没有帮助,留下问题。
我需要帮助。
这是我的代码。
@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")
答案 0 :(得分:0)
您没有正确删除它,您应该引用 member
而不是 ctx.guild.member
,因为您已经从 for 循环中获取了该成员。
for member in ctx.guild.members:
if role in member.roles:
await member.remove_roles(role)
注意:确保启用意图。