【问题标题】:How can I make my bot execute the same action while using different messages?如何让我的机器人在使用不同的消息时执行相同的操作?
【发布时间】:2021-01-14 11:13:42
【问题描述】:

假设我有一个列表。

List = ["Hello", "Sup", "Hi", "Yo"]

即使我使用这些词中的任何一个,我也希望我的机器人发送相同的消息。 如果对方说你好,机器人会回复你好, 如果用户说你好,机器人会回复你好, 等等。

现在,我想在这种情况下使用 message.content.startswith,这样如果该人键入 Hello 以及其他内容(例如“Hello bot!很高兴见到你。”),机器人仍然会回复。我尝试使用message.content,但如果我除了“key”之外还有其他词,机器人不会回复。

我试过了

List = ["Hello", "Sup", "Hi", "Yo"]

if message.content.startswith(List):
    await bla bla bla

但我得到一个错误,说第一个 arg.因为startswith不能是一个列表。 所以,是的,基本上就是这样。我尝试使用“任何”功能,但我注意到这并不是我真正需要的(就我而言,也许是这样,但我错了)。但这基本上是我想要的:无论对方是否说 Hello、Sup、Hi 等,机器人都会回复相同的内容......

【问题讨论】:

    标签: python list discord.py startswith


    【解决方案1】:

    最佳实践建议使用与 List 不同的变量名称。也就是说:

    if message.split(' ')[0] is in List:
         await bla bla bla
    

    将检查消息的第一个单词是否在您的列表中,如果是,则执行其余代码。

    【讨论】:

    • 谢谢!!!虽然我必须添加 .content 并删除,但它工作得很好。再次感谢(也为解释发生了什么。)
    • 真的吗? OP在上面说它对他有用。如果您要消极,请至少发布一些对帖子有帮助的内容以及您的批评。
    • @LiamFiddler 你说得对。您发布的代码不起作用,并且 OP 说他必须添加 .content (请参阅我的示例)我进行编辑以使代码工作
    【解决方案2】:
    if message.content.split()[0] is in List:
    #Do something
    

    这应该有效,并且允许您更改列表中的任何内容,它仍然有效

    您也可以使用 message.split()[0].upper() 并确保列表中的每个单词都是完全大写的,这样用户输入的大小写无关紧要

    【讨论】:

    • 嗯...它告诉我语法无效(它指向 in)- message.split()[0] 在列表中:
    • @JosuePuente 是的,抱歉忘记添加 .content,如果没有,现在应该可以给我发消息
    • 非常感谢!有效!!但我必须删除 is :/ 之后它才能完美运行。
    • @JosuePuente 太棒了,你能接受我的回答,因为我需要声誉吗?谢谢 :)
    【解决方案3】:

    str.startswith() 可以将tuple 作为参数,所以你可以这样做

    tup = ("Hello", "Sup", "Hi", "Yo",)
    if message.content.startswith(tup):
        # do something
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2019-07-17
      • 2021-11-21
      • 1970-01-01
      • 2016-04-10
      • 2021-07-25
      • 2020-04-25
      相关资源
      最近更新 更多