Python discord bot如何将消息与列表进行比较
Posted
技术标签:
【中文标题】Python discord bot如何将消息与列表进行比较【英文标题】:Python discord bot how to compare messages with a list 【发布时间】:2020-08-24 13:33:43 【问题描述】:我正在制作一个 python Discord Bot,现在我试图让他响应列表中的某个消息,但存在一些问题,因为他只在消息开始文本时才响应(而不是在中间或结束)。所以我想弄清楚如何让他比较所有文本并与消息列表匹配,发送文本答案。
Python 3.8.2
代码:
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio
bot = commands.Bot(command_prefix = "$")
phrases = ["QWACK","KWAK","AARK","KWAAAK"]
@bot.event
async def on_ready():
print ("I'm ready!")
@bot.event
async def on_message(message):
if str(phrases) in message.content:
await message.channel.send("dhbang")
【问题讨论】:
【参考方案1】:我很惊讶机器人的反应 xD
str(phrases) 是一个字符串,这个特定的字符串:"["QWACK","KWAK","AARK","KWAAAK"]"
您应该遍历每个单词,并检查该单词是否在消息中。
您还应该考虑在一封邮件中出现的大小写和多个关键字。
【讨论】:
我放了“str”,因为我只尝试了“短语”,但它给出了错误消息。你建议我怎么写这些台词?【参考方案2】:正如 wrong1man 所说,str(phrases)
是一个字符串,所以它应该只响应像 Lovely day, isn't it ["QWACK","KWAK","AARK","KWAAAK"]?
这样的消息。
我只想通过提供一些代码来扩展 wrong1man 的答案:
if any((phrase in message.content) for phrase in phrases):
await message.channel.send("dhbang")
以上是使用a generator expression的更简洁的版本。如果您是 Python 初学者,您可能更喜欢普通的 for 循环:
for phrase in phrases:
if phrase in message.content:
await message.channel.send("dhbang")
break
【讨论】:
哦,你。我完全忘记为此使用循环(被卡在不和谐库中)。是的,我是一个初学者(谢谢你的耐心),你们帮了我很多。 @DearFuture 不客气!如果这回答了您的问题,如果您可以将其标记为答案,将会很有帮助。以上是关于Python discord bot如何将消息与列表进行比较的主要内容,如果未能解决你的问题,请参考以下文章
Discord Python Bot - Bot 的消息不会自动嵌入链接/图像/等
如何使用 discord.js 从 discord bot 向特定用户发送消息