如何使用非电报事件触发器发送电报消息

时间:2019-02-25 15:56:52

标签: telegram telethon

当我从按钮上获得触发时,我正在尝试使用telethon发送电报消息。

当被诸如NewMessage事件之类的事件触发时,我的telethon方法可以正常工作,但是如何与其他触发器(即按下按钮,telethon发送消息)一起发送消息(client.send_message(user, msg))?

目前我得到的只是这些错误:

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()

编辑:

事后看来,我实际的原始问题过于简单了。我没有使用按钮,而是语音命令,无论哪种方式,都是非电报触发器。在电报聊天组@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 :(得分:0)

您需要使用事件来执行此操作。单击按钮的事件为events.CallbackQuery link is here

示例代码如下:

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