首页 > 解决方案 > 如何使 message.channel.send 命令需要来自同一个库的两个单词?(Python 和 Discord.py)

问题描述

我对编码很陌生,如果我的措辞有误,我很抱歉,但我有这个词库

california_triggers = [
  "California", "california", "Fire", "fire"
]

并且我希望仅当消息在所述库中有两个单词时才触发以下命令

    if any(word in msg for word in california_triggers):
      await message.channel.send("California is currently on fire as of "+now_string+".")

我如何让“加利福尼亚现在着火了”需要触发来自 california_triggers 的两个单词?我很抱歉,因为我对这一切都不熟悉。我是否需要仅偏离 discord 库的导入?

标签: pythondiscorddiscord.py

解决方案


首先,它不是一个词库。在 python 中具有完全不同的含义。你有一个单词列表。现在检查 msg 是否有列表中的两个单词,可以通过多种方式完成。

if len(set(msg.content.split()) & set(california_triggers)) == 2:
    #msg and california have two common words

解释:

msg.content.split()按空格分割消息。即成词。
两个集合之间的&运算返回两个集合的交集。即常用词。
我们检查常用词的长度是否为 2,然后触发 if 块。

参考:

注意:
你的问题是说你还没有学会足够的 python 来开始编写你自己的 discord 机器人。我建议从头开始学习 Python和专门针对 discord.py 的OOP,然后才能制作真正的机器人


推荐阅读