@Atageldiev
Начинающий питонист

Как прервать listener в pyTelegramBotAPI?

Привет. Использую pyTelegramBotAPI. Я перерыл весь гугл и нашел один единственный вопрос, который остался без ответа на каком-то форуме по IT, где у человека была такая же проблема как у меня. И так, к сути вопроса: мой бот должен по команде /add_my_question попросить пользователя отправить сообщение, текст которого и будет являться вопросом, который нужно добавить. Я сделал это через bot.set_update_listener(), но оно обрабатывает все сообщения, которые поступят после /add_my_question. А мне нужно чтобы только первое сообщение обработалось и листенер прервался. Как я могу это сделать? Быть может есть какие-то другие способы это реализовать?

def listener(messages):
    for m in messages:
        chat_id = m.chat.id 
        text = m.text
        """Дальше бот берет текст первого сообщения и добавляет его в БД, 
        а второе сообщение, которое он получит, уже должен будет игнорировать.
        Но мой бот сейчас отвечает на все сообщения, а не только на первое"""

@bot.message_handler(commands=["add_my_question"])
def add_question(message):
    chat_id = message.chat.id
    bot.send_message(chat_id, "Напишите вопрос который хотите добавить: ") # --- Вот после этого сообщения пользователь должен отправить свой вопрос в одном сообщении
    bot.set_update_listener(listener)


if __name__ == "__main__":
    bot.infinity_polling(none_stop=True)
  • Вопрос задан
  • 471 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Лучше использовать register_next_step_handler()
https://github.com/eternnoir/pyTelegramBotAPI/blob...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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