Форум сайта python.su
Всем доброго времени суток!
Возникла идея создания чата на Tornado, с условием, что он(чат) будет связывать клиента на сайте и клиента в телеграмме, и они могли бы обмениваться между собой сообщениями.
Tornado с клиентом на сайте будет связываться по WebSocket, бот для телеграма написан с помощью telebot, те изначально сообщение с сайта придет в tornado и потом отправится в telegram, с этим проблем нет, проблемы в понимании как бот будет передавать сообщение от пользователя, который ответил с телеграма.
Инициатором соединения по вебсокету всегда будет клиент с сайта, а клиент с телеграмм будет ему отвечать.
бот
bot = telebot.TeleBot(token) def send_message_to_manager(message, chat_id): bot.send_message(chat_id, message) @bot.message_handler(content_types=['text']) def handle_text(message): print (message.text) return message.text bot.polling()
class MainHandler(tornado.web.RequestHandler): def get(self): loader = tornado.template.Loader(".") self.write(loader.load("index.html").generate()) class WebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): print ('connection opened...') self.write_message("The server says: 'Hello'. Connection was accepted.") def on_message(self, message): self.write_message("You said: " + message) telegramBots.send_message_to_manager(message) print ('received:', message) def on_close(self): print ('connection closed...') application = tornado.web.Application([ (r'/ws', WebSocketHandler), (r'/', MainHandler), (r"/(.*)", tornado.web.StaticFileHandler, {"path": "./resources"}), ]) if __name__ == "__main__": application.listen(9090) tornado.ioloop.IOLoop.instance().start()
Офлайн