Проверка соответствия содержимого сообщения элементам массива - PullRequest
0 голосов
/ 11 июня 2019

Я пишу небольшого, шутливого бота Discord, и решил объединить все ключевые слова, на которые мой бот дал бы идентичный ответ, в массив, чтобы сэкономить время.Я пытаюсь выяснить, как я буду проверять, соответствует ли какое-либо содержимое сообщения какому-либо из ключевых слов в массиве.

client = discord.Client()

keywords=["keyword1", "keyword2", "keyword3"]


@client.event                              ######################
async def on_message(message):             # stops bot from     #
    if message.author == client.user:      # replying to itself #
        return                             ######################

    if message.content.contains(keywords):
        msg = "Hello, {0.author.mention}!".format(message)
        await client.send_message(message.channel, msg)

Я ожидал, что код проверит массив на предмет совпаденияключевые слова в массиве, но на самом деле я просто получаю следующий ТБ:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\Baguette\PycharmProjects\bot\venv\lib\site-packages\discord\client.py", line 270, in _run_event
    await coro(*args, **kwargs)
  File "C:/Users/Baguette/PycharmProjects/bot/main", line 17, in on_message
    if message.content.contains(keywords):
AttributeError: 'str' object has no attribute 'contains'

1 Ответ

1 голос
/ 11 июня 2019

Вы можете попробовать это:

if any(keyword in message.content.lower() for keyword in keywords):
    ...  # respond accordingly here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...