Discord Py / 如何从服务器用户中删除特定角色

时间:2021-01-10 13:40:37

标签: python discord discord.py

我打算与 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")

1 个答案:

答案 0 :(得分:0)

您没有正确删除它,您应该引用 member 而不是 ctx.guild.member,因为您已经从 for 循环中获取了该成员。

for member in ctx.guild.members:
    if role in member.roles:
        await member.remove_roles(role)

注意:确保启用意图。