我正在做一个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()
答案 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秒