From ff862617928c6dea13108742ec0d6a65603934d7 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Thu, 9 Jul 2020 15:02:22 +0200 Subject: [PATCH] add queuing to telegram plugin --- plugin/telegram.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/plugin/telegram.py b/plugin/telegram.py index 5dea41f..60a45e2 100644 --- a/plugin/telegram.py +++ b/plugin/telegram.py @@ -20,12 +20,36 @@ from plugin.pluginBase import PluginBase # ###################### # # Custom plugin includes # from telegram.error import (TelegramError, Unauthorized, BadRequest, TimedOut, NetworkError) -import telegram +from telegram.ext import messagequeue as mq +from telegram.utils.request import Request +import telegram.bot # ###################### # logging.debug("- %s loaded", __name__) +class MQBot(telegram.bot.Bot): + '''A subclass of Bot which delegates send method handling to MQ''' + + def __init__(self, *args, is_queued_def=True, mqueue=None, **kwargs): + super(MQBot, self).__init__(*args, **kwargs) + # below 2 attributes should be provided for decorator usage + self._is_messages_queued_default = is_queued_def + self._msg_queue = mqueue or mq.MessageQueue() + + def __del__(self): + try: + self._msg_queue.stop() + except: + pass + + @mq.queuedmessage + def send_message(self, *args, **kwargs): + '''Wrapped method would accept new `queued` and `isgroup` + OPTIONAL arguments''' + return super(MQBot, self).send_message(*args, **kwargs) + + class BoswatchPlugin(PluginBase): """!Description of the Plugin""" @@ -35,7 +59,9 @@ class BoswatchPlugin(PluginBase): def onLoad(self): """!Called by import of the plugin""" - self.bot = telegram.Bot(token=self.config.get("botToken", default="")) + q = mq.MessageQueue() + request = Request(con_pool_size=8) + self.bot = MQBot(token=self.config.get("botToken", default=""), request=request, mqueue=q) def pocsag(self, bwPacket): """!Called on POCSAG alarm