为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 telethon 获取电报私人频道 ID

如何使用 telethon 获取电报私人频道 ID

MMMHUHU 2023-03-01 15:50:04
您好不知道如何解决这个问题,所以任何帮助将不胜感激。我订阅了一个私人频道。这个频道没有用户名,我也没有邀请链接(管理员刚刚加了我)。由于我在工作中使用这个频道,为了加快我想处理使用 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,但错误总是一样的。尤其:该频道是私有的,因此没有用户名(“@blablabla”)我没有邀请链接我试图处理所有传入的消息,直到管理员在频道上发送消息,打印发件人信息并从“ID”键获取值我尝试使用电报网络并从 url 获取 ID(也在它前面添加 -100)但是当我把 ID 放在参数chats中时,我总是得到上面报告的错误。提前致谢,祝你有美好的一天
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超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_channel 的消息。


查看完整回答
反对 回复 2023-03-01
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以打印您参与的所有对话/对话。您还需要从您获得的 id 中删除 -100 前缀:-1001419092328 = 1419092328 (actual ID)


from telethon import TelegramClient, events



client = TelegramClient("bot", API_ID, API_HASH)


client.start()

print("🎉 Connected")



@client.on(events.NewMessage())

async def my_event_handler(event):

    

    async for dialog in client.iter_dialogs():

        print(dialog.name, 'has ID', dialog.id) # test ID -1001419092328




client.run_until_disconnected()

如果您想收听特定频道,可以使用channel_id=1419092328. 您只会收到广播给它的消息:


from telethon import TelegramClient, events

from telethon.tl.types import PeerChannel




print(f"👉 Connecting...")

client = TelegramClient("bot", API_ID, API_HASH)


client.start()

print("🎉 Connected")



@client.on(events.NewMessage(PeerChannel(channel_id=1419092328)))

async def my_event_handler(event):

    msg = event.text    


    print(f"[M] {msg}")



client.run_until_disconnected()


查看完整回答
反对 回复 2023-03-01
?
catspeake

TA贡献1111条经验 获得超0个赞

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



查看完整回答
反对 回复 2023-03-01
  • 3 回答
  • 0 关注
  • 766 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信