Telegram 从电报中读公共频道的信息

Telegram 从电报中读公共频道的信息,telegram,python-telegram-bot,Telegram,Python Telegram Bot,我需要阅读应用程序中某些公共频道的消息,例如,据我所知,此业务的bot将无法工作。你需要使用客户端api,但是在所有与通道方法连接的地方,你都需要通道id,但是我从哪里获得它呢?我不知道,我只有通道名称,我如何从通道id获得它我没有找到这样的方法 如何通过名称获取频道id?假设您使用的是python,我建议使用库。您可以使用这段代码从@username获取频道\u id和访问\u hash: from telethon.tl.functions.contacts import ResolveUs

我需要阅读应用程序中某些公共频道的消息,例如,据我所知,此业务的bot将无法工作。你需要使用客户端api,但是在所有与通道方法连接的地方,你都需要通道id,但是我从哪里获得它呢?我不知道,我只有通道名称,我如何从通道id获得它我没有找到这样的方法


如何通过名称获取频道id?

假设您使用的是python,我建议使用库。您可以使用这段代码从
@username
获取
频道\u id
访问\u hash

from telethon.tl.functions.contacts import ResolveUsernameRequest

client = TelegramClient(session_file, api_id=X, api_hash='X')
client.connect()
response = client.invoke(ResolveUsernameRequest("username"))
print(response.channel_id)
print(response.access_hash)

确保您已经获得了
api\u id
api\u哈希
。此外,还要确保您的应用程序已通过身份验证,即您有一个可用的
会话\u文件
。如果您不确定如何执行上述步骤,请在Github页面上阅读Telethon的自述文件。

在最新版本中,您可以使用频道的用户名执行此操作

from telethon.tl.functions.contacts import ResolveUsernameRequest
response = client.invoke(ResolveUsernameRequest(<username>))
messages = client.get_message_history(response.peer,limit=1000)
从telethon.tl.functions.contacts导入ResolveUsernameRequest
response=client.invoke(ResolveUsernameRequest())
messages=client.get\u message\u历史记录(response.peer,limit=1000)

获取所有聊天记录的不可知语言的好方法是。您可以通过HTTP请求进行聊天历史查询

登录并接收API密钥后,您可以使用任何语言发出请求,如下所示(javascript示例):

//首先,使用searchPublicChat从频道用户名接收聊天id
let response=等待获取(“https://api.t-a-a-s.ru/client", {
“标题”:{
“内容类型”:“应用程序/json”,
},
“方法”:“发布”,
“body”:JSON.stringify({
api_密钥:“xxxxxxxxx:xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxx”//创建客户端后将从TaaS接收的密钥
“@type”:“searchPublicChat”,
用户名:“用户名”
})
});
//从响应中获取通道id
response=wait response.json();
让chatId=response.id;
//最终获得聊天记录
让消息=等待获取(“https://api.t-a-a-s.ru/client", {
“标题”:{
“内容类型”:“应用程序/json”,
},
“方法”:“发布”,
“body”:JSON.stringify({
api_密钥:“XXXXXXXXX:XXXXXXXXX-XXXXXXXXX-XXXXXXXXX”,
“@type”:“getChatHistory”,
聊天室id:chatId,
来自消息\u id:“0”,
上限:“100”,
偏移量:“0”
}),
});

此处的当前答案已过期,是与较新答案重复的答案AttributeError:“TelegramClient”对象没有属性“invoke”