【问题标题】:Discord.py: How to get the exact word of the command from user input message?Discord.py:如何从用户输入消息中获取命令的确切字词?
【发布时间】:2021-07-08 05:52:14
【问题描述】:

当用户发送不和谐的命令消息时,我们总是得到用户的内容,而不是他们用于执行此命令的命令的确切名称。 例如:

@bot.command(aliases=['bonjour','hola','nihao'])
async def hello(ctx):
   # do something

但是,由于存在别名,用户可以使用“hello”、“bonjour”、“hola”或“nihao”来调用该命令。 那么,有没有什么办法可以得到用户实际输入的是哪一个来调用这个命令?

我尝试过的(不工作):

ctx.command 将始终给我“你好”,即使我使用别名调用此命令。

ctx.command.aliases 会返回一个别名列表

所以,这个问题困扰着我很多。任何建议或帮助都会很棒!

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    你可以使用ctx.invoked_with

    “触发此调用的命令名称。有助于找出哪个别名调用了该命令。

    文档:discord.ext.commands.Context.invoked_with

    【讨论】:

      【解决方案2】:

      您可以从ctx.message.content 的消息内容中检查使用的别名。 像下面这样的东西应该给你确切的别名

      alias = ctx.message.content.lstrip('prefix').split()[0]
      

      请注意,您需要替换机器人的实际前缀,并且这只适用于由单个单词组成的命令(尽管它也可以适应更长的命令)

      【讨论】:

      • 非常感谢!绝对有帮助。我总是喜欢使用 async def hello(ctx, *, content:str) 并使 user_input = content 所以它没有命令。所以,我真的忘记了 ctx.message.content 实际上包含了整个输入。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2020-09-08
      • 1970-01-01
      相关资源
      最近更新 更多