如何使用telethon获取电报专用通道id

2024-06-07 04:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我想不出如何解决这个问题,所以非常感谢您的帮助。 我订阅了一个私人频道。这个频道没有用户名,我也没有邀请链接(管理员刚刚添加了我)。 由于我在工作中使用这个频道,为了加快我想用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. 该频道是私有的,因此没有用户名(“@blabla”)
  2. 我没有邀请链接
  3. 我试图处理所有传入的消息,直到管理员在频道上发送消息,打印发件人信息并从“ID”键获取值
  4. 我尝试使用telegram web并从url获取ID(同时在其前面添加-100)

但是当我将ID放入参数chats中时,我总是得到上面报告的错误

提前感谢,, 祝你今天愉快


Tags: registerid消息核心链接管理员错误私人
2条回答

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

如果您有权访问该频道,则该频道将显示在您的聊天列表中

您必须循环查看聊天记录,检查其标题,然后将所需聊天记录存储在一个变量中:

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 my_private_channel is None:
    print("chat not found")
else:
    print("chat id is", my_private_channel_id)

您可以过滤发送到my_private_频道的邮件

相关问题 更多 >