Foa*_*oad 9 python ipython python-asyncio telegram telethon
我正在尝试运行Telethon 文档提供的第一个代码片段。但是,在出现多个问题(此处和此处)之后,我最终得到了这个修改后的版本:
import os
import sys
from telethon.sync import TelegramClient, events
# import nest_asyncio
# nest_asyncio.apply()
session_name = "<session_name>"
api_id = <api_id>
api_hash = "<api_hash>"
os.chdir(sys.path[0])
if f"{session_name}.session" in os.listdir():
os.remove(f"{session_name}.session")
async with TelegramClient(session_name, api_id, api_hash) as client:
client.send_message('me', 'Hello, myself!')
print(client.download_profile_photo('me'))
@client.on(events.NewMessage(pattern='(?i).*Hello'))
async def handler(event):
await event.reply('Hey!')
client.run_until_disconnected()
Run Code Online (Sandbox Code Playgroud)
但是现在我收到这些警告:
usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:23:RuntimeWarning:协程“MessageMethods.send_message”从未等待 RuntimeWarning:启用tracemalloc以获取对象分配回溯 /usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:24:RuntimeWarning:从未等待协程“DownloadMethods.download_profile_photo” RuntimeWarning:启用tracemalloc以获取对象分配回溯 /usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:30:RuntimeWarning:从未等待协程“UpdateMethods._run_until_disconnected” RuntimeWarning:启用tracemalloc以获取对象分配回溯
在 Jupyter 上运行代码时。现在我的问题是:
@行首的符号是什么@client.on...意思?那条线应该做什么?从这一行开始我就不明白代码了。如果您能帮助我理解它,我将不胜感激。只需添加 即可await解决client.send_message('me', 'Hello, myself!')该错误,并在download_profile_photo完成工作后打印下载图像localhost,这可能就是您看不到任何内容的原因。您应该彻底阅读电视马拉松文档以及如何正确使用照片下载
对客户端的所有调用都有延迟,应始终等待,以便您的代码不会被阻止。您应该阅读asyncio 教程 正确的代码是:
async with TelegramClient(session_name, api_id, api_hash) as client:
await client.send_message('me', 'Hello, myself!')
print(await client.download_profile_photo('me'))
@client.on(events.NewMessage(pattern='(?i).*Hello'))
async def handler(event):
await event.reply('Hey!')
#await client.run_until_disconnected()
Run Code Online (Sandbox Code Playgroud)
@ 是一个装饰器,您应该阅读与装饰器相关的 PEP,但简而言之,它们在您之前执行一个函数。
在这种情况下@client.on(events.NewMessage意味着:
当有一个新事件恰好是与指定模式匹配的消息时,使用调用此函数来处理它handler
| 归档时间: |
|
| 查看次数: |
29899 次 |
| 最近记录: |