Telegram 的网络套接字

Ale*_*eiw 4 python protocols websocket telegram

我想连接到电报的 WebSocket 或其他协议,以接收每条消息。我正在检查开发工具中的网络选项卡,但找不到任何 WebSocket 协议,但是,当我进入控制台时,我可以看到[SW] on message {type: "ping", localNotifications: true, lang: {\xe2\x80\xa6}, settings: {\xe2\x80\xa6}}这让我相信,它是为了保持与 WebSocket 的连接而发送的。我尝试了 telethonpython 库,但它只允许我显示聊天中的所有消息。

\n
from telethon import TelegramClient\nimport asyncio\nclient = TelegramClient(name, api_id, api_hash)\nclient.start()\nfor i in client.iter_dialogs():\n    if i.name == 'test':\n        chj = i\nasync def main():\n\n    channel = await client.get_entity(chj)\n    messages = await client.get_messages(channel, limit= None) #pass your own args\n\n    #then if you want to get all the messages text\n    for x in messages:\n        print(x) #return message.text\n\n"""for i in client.iter_dialogs():\n    print(i)"""\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n
Run Code Online (Sandbox Code Playgroud)\n

我希望每当在所需的聊天中某人输入某些内容时都能收到像 WebSocket 中那样的消息

\n

Ale*_*eiw 7

我找到了答案。events这可以使用来自telethon库来实现

from telethon import TelegramClient, events

name = 'test'

api_id = 1234
api_hash = 'hash'
client = TelegramClient(name, api_id, api_hash)

@client.on(events.NewMessage())
async def newMessageListener(event):
    newMessage = event.message.message
    print(newMessage)
with client:
    client.run_until_disconnected()
Run Code Online (Sandbox Code Playgroud)