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

Python 如何使用telethon获取电报专用通道id,python,telegram,channel,telethon,Python,Telegram,Channel,Telethon,您好,我想不出如何解决这个问题,所以非常感谢您的帮助。 我订阅了一个私人频道。这个频道没有用户名,我也没有邀请链接(管理员刚刚添加了我)。 由于我在工作中使用这个频道,为了加快我想用Telethon处理频道上发布的消息的速度 该计划的核心是: @events.register(events.NewMessage(chats = my_private_channel)) async def handler(event): #do things 问题是我无法过滤到该特定通

您好,我想不出如何解决这个问题,所以非常感谢您的帮助。 我订阅了一个私人频道。这个频道没有用户名,我也没有邀请链接(管理员刚刚添加了我)。 由于我在工作中使用这个频道,为了加快我想用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,但错误总是一样的。特别是:

  • 该频道是私有的,因此没有用户名(“@blabla”)
  • 我没有邀请链接
  • 我试图处理所有传入的消息,直到管理员在频道上发送消息,打印发件人信息并从“ID”键获取值
  • 我尝试使用telegram web并从url获取ID(同时在其前面添加-100)
  • 但是当我把ID放在参数聊天中时,我总是得到上面报告的错误

    提前感谢,,
    祝你度过愉快的一天

    如果没有邀请链接,你无法加入私人频道,也无法获得任何相关信息。顾名思义,它是私人频道。

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

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

    my\u private\u channel\u id=None
    my_private_频道=无
    tg.client.iter_dialogs()中对话框的异步:
    如果dialog.name==“私人聊天室名称”:
    my_private_channel=对话框
    my_private_channel_id=dialog.id
    打破
    如果private_chat为None:
    打印(“未找到聊天记录”)
    其他:
    打印(“聊天id为”,我的私人频道id)
    

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

    可以,但我已订阅该频道。在我的电报应用程序中,我可以看到所有消息,因为管理员添加了我。我还可以通过Telethon阅读所有消息,我唯一不能做的就是过滤通过chats参数中的id传递到event.NewMessage函数的消息。非常感谢!这很有效,也是跟踪所有加入频道和聊天的一个很好的解决方案。非常感谢。