Python电报机器人

时间:2020-07-07 17:12:28

标签: python telegram-bot telethon

我正在做一个Telegram机器人,如果桌面上发生文件更改,它会向Telegram发送消息。

Telethon是一个异步库,但是我排除了异步库,正在等待。该程序连接到电报服务器,并向main()函数发送一次性测试消息。

client.send_message('me', 'Hello to myself!')

以及MyEventHandler类中的功能,该功能在文件更改并在控制台上显示测试消息时运行

print("Tyu")

但是如果您取消注释该行

#client.send_message('me', 'myself!')

然后显示错误,client.send_message (“I”, “I!”)和打印(“Ty”)失败。

任何人都可以帮助您了解问题所在吗?

控制台输出:

RuntimeWarning: coroutine 'MessageMethods.send_message' was never awaited
  client.send_message('me', 'Hello to myself!')
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

程序代码:

from telethon import TelegramClient
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
import time
api_id = ****
api_hash = '****'
 
client = TelegramClient('New', api_id, api_hash)
 
 
class MyEventHandler(FileSystemEventHandler):
       def on_modified(self, event):
           #client.send_message('me', 'myself!')
           print("Tyu")
 
def main():
    # Now you can use all client methods listed below, like for example...
    client.send_message('me', 'Hello to myself!')
    observer = Observer()
    observer.schedule(MyEventHandler(), path='/Users/Apple/Desktop/', recursive=True)
    # Start the observer
    observer.start()
    try:
        while True:
            # Set the thread sleep time
            time.sleep(1)
     except KeyboardInterrupt:
          observer.stop()
          observer.join()
 
with client:
     client.loop.run_until_complete(main())
 
if __name__ == '__main__':
    main()

2 个答案:

答案 0 :(得分:0)

try:
    while True:
        # Set the thread sleep time
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
    observer.join()

我想问题出在这个块上 因为您使用while且它永不中断,所以需要一秒钟的休息时间并继续。您可以将其放置在功能顶部

答案 1 :(得分:0)

class MyEventHandler(FileSystemEventHandler):
    def on_modified(self, event):
        # client.send_message('me', 'myself!')
        print("Tyu")


def main():
    try:
        client.send_message('me', 'Hello to myself!')
        while True:
            c = MyEventHandler(path='/Users/Apple/Desktop/', recursive=True)
            c.on_modified("event")
            time.sleep(1)
    except KeyboardInterrupt:
        print("Errors")


with client:
    client.loop.run_until_complete(main())

尝试类似的方法,它将执行on_modified功能,并且延迟1秒