我正在C#上使用库TLSharp并编写Telegram客户端,有时候我卡住了。
我有一个指向聊天/频道的链接,例如https://t.me/joinchat/some-string,我希望获得有关聊天/频道的信息或加入它。但你只能使用chat_id这样做,我不知道该怎么做。
首先,我考虑了contacts.resolveUsername并从链接传递“some-string”。但它不起作用,说用户名无效。
有没有办法获得团体的身份证?它是否有意使得获取有关群组的信息变得如此复杂?
由于
答案 0 :(得分:0)
好吧,我找到了解决方案(部分,见末尾)。我正在使用this架构,让你知道。
首先,我们需要发送RPC messages.checkChatInvite ,并将参数 hash 设置为链接的最后一部分(在我的情况下为“some-string”) )。
TLChatInvite 类型的回复到达。它将包含有关该组的主要信息:它的类型(聊天或频道?),参与者数量,如果幸运的话,他们自己也是Vector。
(以下这点是我的问题)
但是, messages.importChatInvite 将使当前用户加入该组。如何在没有加入它的情况下获取组的ID我还没有得到任何线索。虽然,这件事适合我的客户。
坦率地说,我很失望,因为这么琐碎的事情花了那么多时间。
答案 1 :(得分:0)
编写以下代码并运行:
from telethon import TelegramClient
api_id=
api_hash=
channel_link = 'your_channel_link'
client = TelegramClient(session_name, api_id, api_hash,
update_workers=4, spawn_read_thread=False)
client.start()
entity = client.get_input_entity(channel_link )
print(entity.channel_id)
顺便说一句,如果你将它用于电报机器人,只需在打印的id之前和-100,这应该是有效的!
如果您想知道如何编码,可以查看所有的远程源代码。