Telegram Bot Проверка контекста

Рейтинг: 0Ответов: 2Опубликовано: 05.08.2023

Есть ключевые слова

trg_tyr = ["турнир", "соревнования", "состязания", "состязание", "судья", "судьи", "смм", "ртс", "фтсарр"]

Когда пользователь пишет ключевое слово, бот выдает ответ, но пользователь должен написать точь-в-точь слово. Как сделать проверку на контекст, а не на сам текст. Чтоб пользователь просто писал ключевое слово.

def get_user_text(message):
    trg_tyr = ["турнир", "соревнования", "состязания", "состязание", "судья", "судьи", "смм", "ртс", "фтсарр"]
    if message.text.lower() in trg_tyr:
        bot.send_message(message.chat.id,'ответ')
    else:
        bot.send_message(message.chat.id, "Простите, но я вас не понимаю, напишите 'Привет' для просмотра бота")

if trigger_phrase in message.text.lower(): # смотрю есть ли триггер-фраза (любое слово, не список) в сообщении, приведённому к нижнему регистру. Не работает

Ответы

▲ 1

Попробуйте такой вариант:

def get_user_text(message):
    if any(x in message.text.lower() for x in trg_tyr):
        bot.send_message(message.chat.id,'ответ')
    else:
        bot.send_message(message.chat.id, "Простите, но я вас не понимаю, напишите 'Привет' для просмотра бота")

но учтите, что вам в trg_tyr необходимо хранить отлавливаемые слова без окончания, вот так:

trg_tyr = ["турнир", "соревновани", "состязани", "судь", "смм", "ртс", "фтсарр"]

таким способом должны отлавливаться слова, такие как:

турнир -> турнир, турнира, турнире, турниру, турниром...
судь -> судья, судьи, судьям, судьями...
▲ -2

необходимо немного видоизменить ваш код, который выглядит так:

    def get_user_text(message):
    trg_tyr = ["турнир", "соревнования", "состязания", "состязание", "судья", "судьи", "смм", "ртс", "фтсарр"]
    if message.text.lower() in trg_tyr:
        bot.send_message(message.chat.id,'ответ')

необходимо изменить на вот таким образом:

@bot.message_handler(content_types=['text']
def get_text_messages(message):
    
    if message.text == "турнир", "соревнования", "состязания", "состязание", "судья", "судьи", "смм", "ртс", "фтсарр":
        bot.send_message(message.from_user.id,("Ответ")

message.from_user.id и message.chat.id ничем не отличаются, можете использовать и то и другое. Данный тип должен стабильно работать, если что то не так, сообщите.