Как в inline mode отредактировать сообщение после нескольких секунд его отправки? aiogram
Как после отправки item, сообщение редактировалось как в item_2? Ну или как можно по другому это реализовать (кроме callback кнопок) Код:
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import InputTextMessageContent, InlineQueryResultArticle
import os, uuid
from time import sleep
bot = Bot(token="TOKEN")
dp = Dispatcher(bot)
# Inline Mode
@dp.inline_handler()
async def inline_handler(query: types.InlineQuery):
text = query.query or "None"
item = InlineQueryResultArticle(
id=str(uuid.uuid4()),
title=f'Result {text!r}',
input_message_content=InputTextMessageContent(
message_text="test"))
item_2 = InlineQueryResultArticle(
id=str(uuid.uuid4()),
title=f'Result {text!r}',
input_message_content=InputTextMessageContent(
message_text="test2"))
await bot.answer_inline_query(query.id, results=[item], cache_time=0)
if __name__ == '__main__':
executor.start_polling(dispatcher=dp,
skip_updates=True)```
Ответы (1 шт):
Автор решения: CRIBLLE
→ Ссылка
import uuid
from asyncio import sleep
from aiogram import Bot, Dispatcher
from aiogram.types import ChosenInlineResult
from aiogram.types import InlineKeyboardButton as ib
from aiogram.types import (InlineKeyboardMarkup, InlineQuery,
InlineQueryResultArticle, InputTextMessageContent)
from aiogram.utils import executor
bot = Bot(token="")
dp = Dispatcher(bot)
# Inline Mode
@dp.inline_handler()
async def inline_handler(query: InlineQuery):
text = query.query or "Введите текст."
item = InlineQueryResultArticle(
id=str(uuid.uuid4()),
title=f"Result {text!r}",
input_message_content=InputTextMessageContent(message_text=text),
reply_markup=InlineKeyboardMarkup().row(
ib(text="-", callback_data="true")
),
)
await bot.answer_inline_query(query.id, results=[item], cache_time=0)
@dp.chosen_inline_handler()
async def chosen_inline_handler(result: ChosenInlineResult):
await sleep(1)
await bot.edit_message_text(
"Пример Редактирования", inline_message_id=result.inline_message_id
)
if __name__ == "__main__":
executor.start_polling(dispatcher=dp, skip_updates=True)