我试图对我的discord服务器发出unban命令,但它没有拆分名称和鉴别符。有人可以给点提示吗?

时间:2019-06-20 18:32:09

标签: python discord discord.py discord.py-rewrite

Python表示“ ValueError:没有足够的值要解压(预期2,得到1)”,指的是第四行代码。我已经搜索了教程,因为我是discord.py的新手,而且似乎都没有帮助。

我尝试在不拆分名称和区分符的情况下禁止用户使用,但我也无法使其正常工作。

@client.command()
async def unban(ctx, *, member):
    banned_users = await ctx.guild.bans()
    member_name, member_discriminator = member.split('#')    
    for ban_entry in banned_users:
        user = ban_entry.user
        if (user.name, user.discriminator) == (member_name, member_discriminator):
            await ctx.guild.unban(user)
            await ctx.send(f'Unbanned {user.mention}')
            return

1 个答案:

答案 0 :(得分:0)

您为什么要拆分它们?将user转换为discord.User对象,然后取消禁止该用户(由于该用户不再是公会成员,因此不能再成为discord.Member对象),这将更加有意义。

@client.command()
async def unban(ctx, *, user=None):

    try:
        user = await commands.converter.UserConverter().convert(ctx, user)
    except:
        await ctx.send("Error: user could not be found!")
        return

    try:
        bans = tuple(ban_entry.user for ban_entry in await ctx.guild.bans())
        if user in bans:
            await ctx.guild.unban(user, reason="Responsible moderator: "+ str(ctx.author))
        else:
            await ctx.send("User not banned!")
            return

    except discord.Forbidden:
        await ctx.send("I do not have permission to unban!")
        return

    except:
        await ctx.send("Unbanning failed!")
        return

    await ctx.send(f"Successfully unbanned {user.mention}!")

这样做的好处是您可以指定ID,提及,名称或名称+区分。