2017-07-27 54 views
1

我創建了2個命令處理程序,它們對命令:/ search和/ myvkplaylist作出反應。在他們的內部,我創建了文本處理程序來獲取答案。但是這個文本處理程序不能在這種情況下切換:用戶選擇/搜索命令,輸入答案,文本處理程序得到正確的答案,但在此之後,如果用戶選擇/我的播放列表命令,機器人仍然從第一個文本/ search命令的處理程序。我找不到這個錯誤,但我確信這是愚蠢的。無法在電報bot api中切換文本處理程序python

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) 

回答

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)