我的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命令。
答案 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