def test_with_conversationHandler(self, dp, update, good_pickle_files, pickle_persistence): dp.persistence = pickle_persistence dp.use_context = True NEXT, NEXT2 = range(2) def start(update, context): return NEXT start = CommandHandler('start', start) def next(update, context): return NEXT2 next = MessageHandler(None, next) def next2(update, context): return ConversationHandler.END next2 = MessageHandler(None, next2) ch = ConversationHandler([start], {NEXT: [next], NEXT2: [next2]}, [], name='name2', persistent=True) dp.add_handler(ch) assert ch.conversations[ch._get_key(update)] == 1 dp.process_update(update) assert ch._get_key(update) not in ch.conversations update.message.text = '/start' update.message.entities = [MessageEntity(MessageEntity.BOT_COMMAND, 0, 6)] dp.process_update(update) assert ch.conversations[ch._get_key(update)] == 0 assert ch.conversations == pickle_persistence.conversations['name2']
def test_with_conversationHandler(self, dp, update, conversations_json): dict_persistence = DictPersistence( conversations_json=conversations_json) dp.persistence = dict_persistence NEXT, NEXT2 = range(2) def start(bot, update): return NEXT start = CommandHandler('start', start) def next(bot, update): return NEXT2 next = MessageHandler(None, next) def next2(bot, update): return ConversationHandler.END next2 = MessageHandler(None, next2) ch = ConversationHandler([start], { NEXT: [next], NEXT2: [next2] }, [], name='name2', persistent=True) dp.add_handler(ch) assert ch.conversations[ch._get_key(update)] == 1 dp.process_update(update) assert ch._get_key(update) not in ch.conversations update.message.text = '/start' dp.process_update(update) assert ch.conversations[ch._get_key(update)] == 0 assert ch.conversations == dict_persistence.conversations['name2']
def test_with_nested_conversationHandler(self, dp, update, conversations_json): dict_persistence = DictPersistence( conversations_json=conversations_json) dp.persistence = dict_persistence dp.use_context = True NEXT2, NEXT3 = range(1, 3) def start(update, context): return NEXT2 start = CommandHandler('start', start) def next(update, context): return NEXT2 next = MessageHandler(None, next) def next2(update, context): return ConversationHandler.END next2 = MessageHandler(None, next2) nested_ch = ConversationHandler( [next], {NEXT2: [next2]}, [], name='name3', persistent=True, map_to_parent={ConversationHandler.END: ConversationHandler.END}, ) ch = ConversationHandler([start], { NEXT2: [nested_ch], NEXT3: [] }, [], name='name2', persistent=True) dp.add_handler(ch) assert ch.conversations[ch._get_key(update)] == 1 assert nested_ch.conversations[nested_ch._get_key(update)] == 1 dp.process_update(update) assert ch._get_key(update) not in ch.conversations assert nested_ch._get_key(update) not in nested_ch.conversations update.message.text = '/start' update.message.entities = [ MessageEntity(MessageEntity.BOT_COMMAND, 0, 6) ] dp.process_update(update) assert ch.conversations[ch._get_key(update)] == 1 assert ch.conversations == dict_persistence.conversations['name2'] assert nested_ch._get_key(update) not in nested_ch.conversations dp.process_update(update) assert ch.conversations[ch._get_key(update)] == 1 assert ch.conversations == dict_persistence.conversations['name2'] assert nested_ch.conversations[nested_ch._get_key(update)] == 1 assert nested_ch.conversations == dict_persistence.conversations[ 'name3']