Python, telethon. Нажатие callback кнопки со стороны клиента

Ситуация следующая. Есть питоновский скрипт, который использует телеграмм-учетку, и от имени учетки заходит в нужный чат-бот, где имеется сообщение с callback кнопками (как я понимаю, это кнопки, находящиеся на в главном меню, а прикрепленные к конкретному сообщению и находятся под сообщением). Требуется "нажать конкретную кнопку" в сообщении. На самом деле действий куда больше (последовательность действий), но проблемный кусок кода примерно такой:

from telethon import TelegramClient, sync

api_id = ...
api_hash = ...
client = TelegramClient('session_name', api_id, api_hash)

messages = client.get_messages('имя_чата_бота')
messages[0].click(text='какой-то текст кнопки')

При выполнении кода действительно нажимается CallBack-кнопка, но при этом выполнение программы зависает и когда отвисает отваливается по ошибке:

Traceback (most recent call last):
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\telethon\tl\custom\message.py", line 864, in click
    return await button.click()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\telethon\tl\custom\messagebutton.py", line 87, in click
    return await self._client(req)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\telethon\client\users.py", line 30, in __call__
    return await self._call(self._sender, request, ordered=ordered)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\telethon\client\users.py", line 77, in _call
    result = await future
telethon.errors.rpcbaseerrors.BadRequestError: RPCError 400: BOT_RESPONSE_TIMEOUT (caused by GetBotCallbackAnswerRequest)

У меня идет линейное выполнение кода, т.е. мне надо выполнить команду, дождаться результата и дальше выполнять код, в частности набор следующих команд и нажатий кнопок. Как я понимаю, тут программа говорит, что требуется как то иначе использовать обработку событий, т.е. ожидания результата нажатия, но не понимаю как именно. PS методика навеяна вот этим сообщением, точнее рекомендациями: https://fooobar.com/questions/18299291/how-do-you-make-the-python-bot-click-on-the-button-in-the-telegram-bot


Ответы (1 шт):

Автор решения: ecXbe
api_id = ... 
api_hash = ... 
app = TelegramClient('session', api_id, api_hash)

async def main():
    messages = await app.get_messages('...')
    await messages[0].click(text='text')

app.start()
app.loop.run_until_complete(main())

Знаю, что вовремя ответил

→ Ссылка