Goshujin
@Goshujin
Я только начал изучать Python, не бейте.

Бот игнорирует триггер если в сообщении есть пробел, как исправить?

Хочу сделать триггеры на которые бот будет отвечать сообщением, получилось, но если в сообщении на которое есть пробел то бот его не видит, как это исправить?
GoodNight = ['Доброй ночи']
BotMen = ['Бот', 'Bot']

@Bot.event
async def on_message(message):
    if message.author == Bot.user:
        return
    else:
        content = message.content.split()
        for word in content:
            if word in GoodNight:
                await message.channel.send('Ты уже уходишь или это ночное приветствие? %s' % Bot.get_emoji(755856809436250253))
            if word in BotMen:
                await message.channel.send('Да, я вас слушаю %s' % Bot.get_emoji(810645595089535087))
    await Bot.process_commands(message)

6029aed4dbe0d410941836.png
  • Вопрос задан
  • 467 просмотров
Решения вопроса 1
@davGro
Шушуть люблю питон, по шушуть тыкаю где-то год.
Лучшим решением будет такое:
goodNight = ['доброй ночи']
botMen = ['бот', 'bot']
# пишем все строки в нижнем регистре 
# (маленькими буквами) для корректного сравнения в будущем


@Bot.event
async def on_message(message, txt: message.content, send: message.channel.send): # упрощаем себе жизнь
    if message.author == Bot.user:
        return
    else:
        content = " ".join(txt.lower().split()) 
        """
        строкой выше мы из " ДоБрой НочИ " делаем "доброй ночи"
        то есть убираем лишние пробелы в начале и в конце
        и приводим к нижнему регистру для корректного сравнения"""
        if content in goodNight:
            await send('Ты уже уходишь или это ночное приветствие? %s' % Bot.get_emoji(755856809436250253))
        if content in botMen:
            await send('Да, я вас слушаю %s' % Bot.get_emoji(810645595089535087))
    await Bot.process_commands(message)


Не знаю на каком фреймворке вы пишете, но подозреваю что в нем можно писать return "Спокойной ночи" вместо await message.channel.send('Спокойной ночи'). И да, как приметили до меня, переменные не называют с большой буквы, только классы. Рекомендую пройти небольшой курс для самый начинающих в питоне. Думаю вам будет полезно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SH1SH4
Чувак, всё просто, у тебя сплит разбивает список на "Доброй" и "ночи", и потом идёт проверка не есть ли это в строке, а есть ли это в списке, а строки "Добрый" в списке нет, есть только строка "Доброй ночи", надеюсь понятно объяснил? Если кратко, то в данном случае ты можешь убрать квадратные скобки в переменной GoodNight(кстати переменные с большой буквы не называют в питоне) и всё заработает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы