繁体   English   中英

为什么我的 Discord.py 踢命令在识别昵称时出现问题?

[英]Why Does My Discord.py Kick Command have a problem recognizing nicknames?

@client.command( )
async def kick(ctx, user_name: discord.User, reason):
    await ctx.guild.kick(user_name)
    await ctx.send(f"""{user_name} has been kicked for {reason}""")

出于某种原因,有时我的机器人无法识别某些昵称。 对于没有空格/只有一个词的昵称,机器人踢他们没有问题。 但是对于带有下划线或空格的昵称,它就不起作用了。 我做错了什么吗?

您的命令中有一些错误:

  • 如果你在user_name后面写一个句子, reason只会取这个句子的第一个单词作为值。 要解决第一个问题:
     #Change async def kick(ctx, user_name: discord.User, reason): #To async def kick(ctx, user_name: discord.User, *, reason):
  • 那么, user_name应该是Member object,而不是User object。 这样,您的程序将仅在调用命令的服务器中查找指定用户:
     #Change async def kick(ctx, user_name: discord.User, *, reason): #To async def kick(ctx, user_name: discord.Member, *, reason):
  • 最后,要让它按预期工作,请提及您要踢的用户,而不是写他的名字:
    正确的方式 → !kick @User You didn't respect the rules
    没有那么正确的方法 → !kick User You didn't respect the rules

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM