Discord Bot Kick命令无法按预期工作

时间:2019-03-09 06:20:43

标签: python-3.x discord.py

我的kick命令需要帮助。我没有收到任何错误,但是结果是我期望的其他东西,我的代码在下面。

@bot.command(pass_context=True, name="kick")

@has_permissions(kick_members=True)

async def kick(ctx, *, target: Member):

if target.server_permissions.administrator:

    await bot.say("Target is an admin")
else:
    try:
        await bot.kick(target)
        await bot.say('Kicked{}'.format(member.mention))
    except Exception:
        await bot.say("Something went wrong")

@kick.error
async def kick_error(error, ctx):

if isinstance(error, CheckFailure):

     await bot.send_message(ctx.message.channel, "You do not have permissions")
elif isinstance(error, BadArgument):
    await bot.send_message(ctx.message.channel, "Could not identify target")
else:
    raise error 

但是命令确实踢了成员,但没有说踢(MEMBERNAME)。 相反,它说“出了点问题”。还有两个命令适用于我的kick命令。

1 个答案:

答案 0 :(得分:1)

如果情况并非如此,我真的不明白为什么要尝试除exception之外。

我删除了*函数中的async def kick(),因为您只要求成员没有多个参数,所以在那里没有意义,我也删除了try和{{1} }我认为在这种情况下没有用的东西。

except

例如,如果您要检查主持人或使用该命令的人是否也在将用户置于应踢的命令中,则可以使用@bot.command(pass_context=True, name="kick") @has_permissions(kick_members=True) async def kick(ctx, target: discord.Member=None): if target.server_permissions.administrator: await bot.say("Target is an admin") else: await bot.kick(target) await bot.say('Kicked{}'.format(target.mention)) @kick.error async def kick_error(error, ctx): if isinstance(error, CheckFailure): await bot.send_message(ctx.message.channel, "You do not have permissions") elif isinstance(error, BadArgument): await bot.send_message(ctx.message.channel, "Could not identify target") else: raise error 语句来检查该用户是否被踢if函数仍为discord.Member,如果是,它将在聊天中输出消息。在这种情况下,我已将消息“您忘记了用户”

none