无法在电报bot api python中切换文本处理程序

时间:2017-07-27 11:28:14

标签: python telegram-bot python-telegram-bot

我创建了2个命令处理程序,它们对命令做出反应:/ search和/ myvkplaylist。在他们内部,我创建了文本处理程序来获得答案。但是这个文本处理程序无法在这种情况下切换:用户选择/搜索命令,输入答案,文本处理程序得到正确的答案,但之后,如果用户选择/我的播放列表命令,机器人仍然给出结果/ search命令的第一个文本处理程序。我无法找到错误,但我确信这是一件愚蠢的事。

import telebot
import const

#Подключаюсь к боту
bot = telebot.TeleBot(const.token)


#Поиск по запросу
#Парсим команду серч
@bot.message_handler(commands=["search", "start"])
def handle_command(message):
    bot.send_message(message.from_user.id, parse_mode='HTML',
                     text="<b>What are you looking for?</b> \nFor example: <i>Elton John</i> or <i>Smells like teen spirit</i>")

    @bot.message_handler(content_types=["text"])
    def handle_text(message2):
        # Получаем ссылку на массив плейлиста
        const.offs = 0
        bot.send_message(message2.chat.id, "It's a search")

#Парсим команду вкплейлиста
@bot.message_handler(commands=["myvkplaylist"])
def handle_command(message):
    #Вводное сообщение с запросом айди
    bot.send_message(message.from_user.id, parse_mode='HTML',
                     text="I need your or other person's vk page ID, write it to me <b>(whitout 'id', just numbers)</b>")
    #Парсим ответ
    @bot.message_handler(content_types=["text"])
    def handle_text(message):
        #Получаем ссылку на массив плейлиста
        const.offs = 0
        bot.send_message(message.chat.id, "It's a playlist")
bot.polling(none_stop=True, interval=0)

1 个答案:

答案 0 :(得分:0)

好的,我找到了一些东西,它正在使用register_next_step_handler

import telebot
import const

#Подключаюсь к боту
bot = telebot.TeleBot(const.token)


#Поиск по запросу
#Парсим команду серч
@bot.message_handler(commands=["search", "start"])
def searching(search):
    answer = bot.send_message(search.from_user.id, "Give search request, name of song etc")
    bot.register_next_step_handler(answer, searchanswer)

def searchanswer(search):
    answer = search.text
    bot.send_message(search.from_user.id, answer + " It's search" )

@bot.message_handler(commands=["vkplaylist"])
def vkplaylist(vkid):
    answer = bot.send_message(vkid.from_user.id, "Give vk page id")
    bot.register_next_step_handler(answer, vkplaylistanswer)
def vkplaylistanswer(vkid):
    answer = vkid.text
    bot.send_message(vkid.from_user.id, answer + " It's  playlist")


bot.polling(none_stop=True, interval=0)