如何使用Telethon获取电报专用频道ID

时间:2020-07-11 11:09:33

标签: python telegram channel telethon

您好,我不知道如何解决此问题,因此,我们将不胜感激。 我订阅了一个私人频道。该频道没有用户名,我没有邀请链接(管理员刚刚添加了我)。 由于我在工作中使用此通道,因此为了加快处理速度,我想使用Telethon处理发布在该通道上的消息。

该程序的核心是:

@events.register(events.NewMessage(chats = my_private_channel))
async def handler(event):
    
        #do things

问题是我无法过滤到达该特定频道ID的消息。我收到错误消息:

ValueError: Cannot find any entity corresponding to "0123456789"

我尝试了不同的技术来获取我的频道ID,但错误始终相同。特别是:

  1. 该频道为私人频道,因此没有用户名(“ @blablabla”)
  2. 我没有邀请链接
  3. 我试图处理所有传入消息,直到管理员在通道上发送消息,打印发件人信息并从“ ID”键获取值为止。
  4. 我尝试使用电报网络并从网址中获取ID(也在其前面添加-100)

但是当我将ID放入参数聊天时,总是会收到上面报告的错误。

预先感谢, 祝你有美好的一天

2 个答案:

答案 0 :(得分:1)

如果您有权访问该频道,那么该频道就会显示在您的聊天列表中。

您必须遍历聊天,检查其标题,然后将所需的聊天存储在变量中:

my_private_channel_id = None
my_private_channel = None

async for dialog in tg.client.iter_dialogs():
    if dialog.name == "private chat name":
        my_private_channel = dialog
        my_private_channel_id = dialog.id
        break

if private_chat is None:
    print("chat not found")
else:
    print("chat id is", my_private_channel_id)

比您可以过滤发送到my_private_channel的消息。

答案 1 :(得分:-1)

如果没有邀请链接,您将无法加入私人频道,也无法获取有关该频道的任何信息。顾名思义,它是私​​有的。