如何使用 Telegram API 通过给定的 joinlink 获取私人频道的聊天 ID?

Posted

技术标签:

【中文标题】如何使用 Telegram API 通过给定的 joinlink 获取私人频道的聊天 ID?【英文标题】:How to obtain chatid of a private channel by given joinlink using Telegram API? 【发布时间】:2017-11-18 05:19:33 【问题描述】:

我有一个这样的加入链接:https://t.me/joinchat/AAAAAEI95pT9clShebEcMg

我想知道导致我获得该频道的chatid的功能。

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用电报API函数messages.checkChatInvite

from telethon import TelegramClient
from telethon.tl.functions.messages.check_chat_invite import CheckChatInviteRequest


client = TelegramClient('session_id', '+phonenumber', api_id=1234, api_hash='0cxxxxxxx')
client.connect()

channel_hash = "AAAAAxxxxxxxx"
result = client.invoke(CheckChatInviteRequest(channel_hash))
print (result)

结果会是这样的:

(chatInviteAlready (ID: 0x5abcdefg) = (chat=(channel (ID: 0x5abcdefg) = (creator=None, kicked=None, left=None, editor=True, moderator=None, broadcast=True, verified=None, megagroup=None, restricted=None, democracy=None, signatures=None, min=None, id=123456789, access_hash=615xxxxxxxxx, title=testChannel, username=None, photo=(chatPhotoEmpty (ID: 0x37xxxxxxx) = ()), date=2017-06-14 14:34:50, version=0, restriction_reason=None))))

这里响应中的 id 是您要查找的频道 id。 上面的示例使用 Telethon 和 python,但您可以使用任何语言和客户端连接到电报 API。

【讨论】:

@Burzum 频道哈希是您发送的网址末尾的哈希。在您的示例中,它是 AAAAAEI95pT9clShebEcMg @Burzum 如果您发现我的回答有帮助,请将其标记为已接受。让我为您找到一个如何向频道发送消息的示例,但是等等,成员无法向频道发送消息。他们需要是管理员。这是您尝试向其发送消息的群组或频道吗? @Burzum 在我的回答结果中看到 checkChatInvite 的结果,它已经有 access_hash: id=123456789, access_hash=615xxxxxxxxx。 @Burzum 用于不需要 access_hash 的组。只有超级组才需要访问哈希。所以你发现只是用chat_id发送消息。 @Burzum 您需要使用 InputPeerChat 将 chat_id 转换为聊天。像这样 chat = InputPeerChat(chat_id) 然后调用 send_message(chat, 'Test')

以上是关于如何使用 Telegram API 通过给定的 joinlink 获取私人频道的聊天 ID?的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 自动将消息发布到 Telegram 频道

Telegram 通过 bot api 将成员添加到频道

找出我自己的用户 ID 以使用 Telegram API 发送消息

如何使用 Telegram Bot API 获取 Telegram 频道用户列表

如何与 Telegram API 交互

如何使用 Telegram API 接收图像?