用Telethon库开发网关-(Telegram)

时间:2019-05-17 10:41:40

标签: python telegram telethon

我需要使用Telethon库开发网关: https://github.com/LonamiWebs/Telethon

网关必须创建一个连接电报客户端的服务器套接字。 当网关从套接字(由客户端)接收到消息时,它将特定消息发送到Telegram服务器(通过Telethon)。当它从电报服务器收到更新时,它将通过套接字将消息发送给客户端。

我已从以下代码开始:

async def main(socket):    
              client = await TelegramClient(session_name, api_id, api_hash).start()

           @client.on(events.NewMessage)
           async def handler(event):
                 #new message, sending to the socket...
                 try:
                   mess = event.message.message
                   message = (mess).encode()
                   socket.send(message)
                 except Exception as e: 
                   print("Exception: ",e)

            await client.run_until_disconnected()

主要->

print("Start program...")    
HOST = '127.0.0.1'
PORT = 65436
print("Waiting connection at the port: ",PORT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
conn, addr = s.accept()
print("Connection OK!")    
asyncio.get_event_loop().run_until_complete(main(conn))

此代码在从电报服务器收到新消息时,将正确地(通过套接字)将消息发送到电报客户端。 问题是我不知道如何也从套接字监听,当我收到消息(由套接字客户端)时,将其发送到电报服务器。

P.S。在行等待client.run_until_disconnected()之后,我什么也不能做。

非常感谢!!

1 个答案:

答案 0 :(得分:1)

对不起,我的问题如下:

a:focus:not(:link:active) {  
outline: -webkit-focus-ring-color auto 5px;  
}

如果名称 ==“ 主要”:

async def main(socket):    
client = await TelegramClient(session_name, api_id, api_hash).start()

@client.on(events.NewMessage)
async def handler(event):
    #new message, sending to the socket...
    try:
        mess = event.message.message
        message = (mess).encode()
        socket.send(message)
    except Exception as e: 
        print("Exception: ",e)

await client.run_until_disconnected()

while(1):
        print("Waiting message from the client...")
        data = socket.recv(1024)
        mess = data.decode("utf-8")
        print("Message Received: ",mess)
        #self.telegramClient.send_message('PHONE', mess)

问题是此行: 等待client.run_until_disconnected()

没有这个,我的处理程序将不会收到上传的文件。但是,如果我插入此行,我将等不及来自套接字的消息。

我希望我已经很好地解释了我的问题...

非常感谢您!