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 шт):
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())
Знаю, что вовремя ответил