Как получить последнее сообщение и запрос обратного вызова кнопки в одной и той же основной функции с помощью телетона - PullRequest
0 голосов
/ 21 апреля 2020

Я создал бот-телеграмму, используя библиотеку телетонов, которая принимает ответы от пользователя, используя Разговор . Его методы get_response() получают ответы от пользователя & wait_event() получают ответы кнопок и находятся в том же блоке моей основной функции. Но я столкнулся с некоторой сложностью и переписал код без использования Conversation. Но я не смог найти ни одной выделенной функции, подобной get_response() и wait_event().

Из примеров в руководстве, Чтобы получить последнее сообщение, python decorator @client.on(events.NewMessage) с его функцией-обработчиком события Вызов и операции, связанные с последним сообщением, выполняются только в этой функции обработчика событий, и она не возвращает / не передает значения в основную функцию. Как я могу получить ответ пользователя в моей основной функции?

Аналогично, чтобы получить кнопку callbackquery, мне нужно настроить @client.on(events.CallbackQuery), но ответ кнопки не может быть передан моей основной функции. Как я могу получить ответ кнопки в моей основной функции?

@bot.on(events.NewMessage(incoming=True, pattern='Hi'))
async def main(event):

    async with bot.conversation(SENDER) as conv:
        await conv.send_message('choose', buttons=[[Button.inline('Yes'), Button.inline('No')] ])
        button_press = await conv.wait_event(press_event())

        await conv.send_message('<b> Want More ? </b>', parse_mode='html', buttons=[ [Button.text('Yes', resize=True,single_use=True), Button.text('No', resize=True,single_use=True)], [Button.text('More', resize=True,single_use=True)] ] )
        reply=await conv.get_response()
...