python - Telegram 的 websocket

标签 python websocket protocols telegram

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

from telethon import TelegramClient
import asyncio
client = TelegramClient(name, api_id, api_hash)
client.start()
for i in client.iter_dialogs():
    if i.name == 'test':
        chj = i
async def main():

    channel = await client.get_entity(chj)
    messages = await client.get_messages(channel, limit= None) #pass your own args

    #then if you want to get all the messages text
    for x in messages:
        print(x) #return message.text

"""for i in client.iter_dialogs():
    print(i)"""
loop = asyncio.get_event_loop()
loop.run_until_complete(main())

我希望在所需的聊天中每当有人输入某些内容时,就像在 WebSocket 中一样获取消息

最佳答案

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

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()

关于python - Telegram 的 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66225422/

相关文章:

swift - 协议(protocol)方法是否意味着在 Swift 中被覆盖?

python - 如何仅从一个文件中打印出具有间隔的记录,而不是与另一个文件中的记录重叠

html - 最新 WebSocket 协议(protocol)的演示页面

php - 我无法与 ReactPHP 的 Pawl 和 Ratchet 交叉通信

node.js - SocketIO + MySQL 认证

ios - 应该在哪里快速声明协议(protocol)?

python - 格子路径算法未完成 20 X 20 网格的运行

python - 在 Pandas Dataframe 中删除具有低标准偏差的列

python - 为什么 pip 安装的依赖项不在 pipfile 中?

php - 使用 PHP 套接字开始使用 FIX 协议(protocol)