我正在使用Telethon python包用于Telegram API。
使用以下代码,我可以根据关键字搜索收集特定用户的消息:
import config
from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.sync import TelegramClient
from telethon import functions, types
import datetime
import asyncio
api_id = config.telegram_crawler_secrets_and_settings['TELEGRAM_API_ID']
api_hash = config.telegram_crawler_secrets_and_settings['TELEGRAM_API_HASH']
phone = config.telegram_crawler_secrets_and_settings['TELEGRAM_API_PHONE_NUMBER']
async def main():
async with TelegramClient('anon', api_id, api_hash) as client:
async for message in client.iter_messages(5067150042, limit=10, search='hello', wait_time=0):
print(message.stringify())
await asyncio.sleep(0.2)
asyncio.run(main())
根据这篇文章,应该可以用None
替换实体(用户ID)并跨公共通道执行全局搜索,但是它似乎在我的尝试中不起作用(见下文)。
async def main():
async with TelegramClient('anon', api_id, api_hash) as client:
async for message in client.iter_messages(None, limit=10, search='hello', wait_time=0):
print(message.stringify())
await asyncio.sleep(0.2)
asyncio.run(main())
感谢收到任何建议!
我刚刚尝试了这个,这对我有效:
async def main():
async with TelegramClient('session', api_id, api_hash) as client:
async for message in client.iter_messages(None, limit=10, search='hello', wait_time=0):
print(message.stringify())
await asyncio.sleep(0.2)
asyncio.run(main())
如果它仍然不能为你工作,请提供你得到的错误信息。