From 8919fc08a31d83cecfb856964482d4c6b3278bb5 Mon Sep 17 00:00:00 2001 From: Davte Date: Fri, 12 Jul 2019 12:39:55 +0200 Subject: [PATCH] Inline query handler refactored --- davtelepot/bot.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/davtelepot/bot.py b/davtelepot/bot.py index 55711fa..02a9f10 100644 --- a/davtelepot/bot.py +++ b/davtelepot/bot.py @@ -390,28 +390,25 @@ class Bot(TelegramBot, ObjectWithDatabase): Answer it with results or log errors. """ query = update['query'] - answer, switch_pm_text, switch_pm_parameter = None, None, None + results, switch_pm_text, switch_pm_parameter = None, None, None for condition, handler in self.inline_query_handlers.items(): if condition(query): - _function = handler['function'] - if asyncio.iscoroutinefunction(_function): - answer = await _function(update) - else: - answer = _function(update) + _handler = handler['handler'] + results = await _handler(bot=self, update=update, + user_record=user_record) break - if not answer: - answer = self.default_inline_query_answer - if type(answer) is dict: - if 'switch_pm_text' in answer: - switch_pm_text = answer['switch_pm_text'] - if 'switch_pm_parameter' in answer: - switch_pm_parameter = answer['switch_pm_parameter'] - answer = answer['answer'] - answer = make_inline_query_answer(answer) + if not results: + results = self.default_inline_query_answer + if type(results) is dict: + if 'switch_pm_text' in results: + switch_pm_text = results['switch_pm_text'] + if 'switch_pm_parameter' in results: + switch_pm_parameter = results['switch_pm_parameter'] + results = results['answer'] try: await self.answerInlineQuery( update['id'], - answer, + results=results, cache_time=10, is_personal=True, switch_pm_text=switch_pm_text, @@ -1055,7 +1052,8 @@ class Bot(TelegramBot, ObjectWithDatabase): is_personal=None, next_offset=None, switch_pm_text=None, - switch_pm_parameter=None): + switch_pm_parameter=None, + update=None): """Answer inline queries. This method wraps lower-level `answerInlineQuery` method.