From c6871f8071906dcc21f6a3bf55ad2f3b894e2b59 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Sat, 10 Aug 2019 20:07:15 +0300 Subject: [PATCH] Refactor examples/inline_bot.py --- examples/inline_bot.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/examples/inline_bot.py b/examples/inline_bot.py index f1a81bb4..28f83e43 100644 --- a/examples/inline_bot.py +++ b/examples/inline_bot.py @@ -1,9 +1,11 @@ -import asyncio +import hashlib import logging -from aiogram import Bot, types, Dispatcher, executor +from aiogram import Bot, Dispatcher, executor +from aiogram.types import InlineQuery, \ + InputTextMessageContent, InlineQueryResultArticle -API_TOKEN = 'BOT TOKEN HERE' +API_TOKEN = 'BOT_TOKEN_HERE' logging.basicConfig(level=logging.DEBUG) @@ -12,10 +14,22 @@ dp = Dispatcher(bot) @dp.inline_handler() -async def inline_echo(inline_query: types.InlineQuery): - input_content = types.InputTextMessageContent(inline_query.query or 'echo') - item = types.InlineQueryResultArticle(id='1', title='echo', - input_message_content=input_content) +async def inline_echo(inline_query: InlineQuery): + # id affects both preview and content, + # so it has to be unique for each result + # (Unique identifier for this result, 1-64 Bytes) + # you can set your unique id's + # but for example i'll generate it based on text because I know, that + # only text will be passed in this example + text = inline_query.query or 'echo' + input_content = InputTextMessageContent(text) + result_id: str = hashlib.md5(text.encode()).hexdigest() + item = InlineQueryResultArticle( + id=result_id, + title=f'Result {text!r}', + input_message_content=input_content, + ) + # don't forget to set cache_time=1 for testing (default is 300s or 5m) await bot.answer_inline_query(inline_query.id, results=[item], cache_time=1)