Как отправить сообщение Telethon с помощью триггеров событий без телеграм - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь отправить телеграмму с помощью телетона, когда получаю триггер от кнопки.

Мои методы telethon работают нормально, когда они запускаются такими событиями, как событие NewMessage, но как мне отправить сообщение (client.send_message(user, msg)) с другими триггерами (т. Е. Нажата кнопка, telethon отправляет сообщение)?

В настоящее время все, что я получаю, это следующие ошибки:

RuntimeError: There is no current event loop in thread 'Thread-1'.

RuntimeWarning: coroutine 'send_to' was never awaited

Вот упрощенная версия моего кода:

with client:
      client.start()
      while True:
         if (button):
         await client.send_message(int(chat),msg)
      client.run_until_disconnected()

edit:

Оглядываясь назад, мой первоначальный вопрос был упрощен.Я не использовал кнопку, но голосовые команды, в любом случае, не телеграмма триггер.С помощью чата Telegram @TelethonChat можно было использовать ответ:

import asyncio

loop = asyncio.new_event_loop()

async def send_to(chat, msg):
    await client.send_message(chat, msg)

def mainfunc():
    if (trigger):
        loop.create_task(send_to(chat, msg))

1 Ответ

0 голосов
/ 28 февраля 2019

Для этого вам нужно использовать события.событие для нажатия кнопки - events.CallbackQuery ссылка здесь

Пример кода может быть следующим:

from telethon import events
from telethon.tl.custom import Button

@client.on(events.CallbackQuery)
async def handler(event):
    await event.answer('You clicked {}!'.format(event.data))

client.send_message(chat, 'Pick one', buttons=[
    [Button.inline('Left'), Button.inline('Right')]]
])

, вы можете найти больше примеров здесь:https://telethon.readthedocs.io/en/latest/extra/examples/telegram-client.html

...