Python Discord бот как сравнить сообщения со списком - PullRequest
2 голосов
/ 09 мая 2020

Я создаю 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")

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Как сказал неправильно1man, str(phrases) - это строка, поэтому он должен отвечать только на сообщения типа Lovely day, isn't it ["QWACK","KWAK","AARK","KWAAAK"]?. Я просто хотел бы расширить ответ неверного человека, указав код:

if any((phrase in message.content) for phrase in phrases):                                                    
    await message.channel.send("dhbang")

Выше приведена более краткая версия, использующая выражение генератора . Если вы начинаете Python, вам может быть удобнее использовать нормальный oop:

for phrase in phrases:
    if phrase in message.content:                                                    
        await message.channel.send("dhbang")
        break
0 голосов
/ 09 мая 2020

я удивлен, что бот вообще отвечает xD

str (phrases) - это строка, это конкретная c строка: "[" QWACK "," KWAK "," AARK "," KWAAAK "]"

Вы должны перебирать каждое слово и проверять, есть ли это слово в сообщении.

Вы также должны учитывать заглавные буквы и несколько ключевых слов, появляющихся в одном сообщении.

...