此刻,我有一个电报客户端,可以读取给定通道中的所有消息。
from telethon import TelegramClient, connection
import socks
import asyncio
client = TelegramClient('session4', api_id, api_hash, proxy=(socks.SOCKS5, str(proxy_ip), port),timeout=66)
client.start()
kanal='???'
loop = asyncio.get_event_loop()
dp = loop.run_until_complete(client.get_entity(kanal))
posts = loop.run_until_complete(client.get_messages(dp,limit=1000))
loop.close()
为了自动搜索频道,我决定通过频道搜索来获取它们。找到了方法
result = client(functions.contacts.SearchRequest(q='some',limit=100))
但是他一直返回一个空列表。我怀疑这是否真的是这种方法?还是我应该使用其他东西?
答案 0 :(得分:0)
您可以使用get_entity()。如果您有channel_id,则可以执行以下操作。
my_channel = client.get_entity(PeerChannel(some_id))
如果您没有ID,但确实有名称,则可以这样做。
my_channel = client.get_entity('some')
您可以找到更多信息here
如果您希望获取所有频道,然后进行搜索,则可以先获取所有对话框,然后检查每个聊天的标题(如果它与您的频道名称匹配)
result = client.get_dialogs()
for chat in result:
if chat.title == 'some':
#do something