]> kaliko git repositories - sid.git/blobdiff - sid/plugin.py
Switch to SPDX headers
[sid.git] / sid / plugin.py
index b21cff9e0897c556d0248abc3cd4ae2e68bcfb54..3f4e7dac89293758f0722e02a3ce8b40b0a64915 100644 (file)
@@ -1,19 +1,6 @@
 # -*- coding: utf-8 -*-
-
-# Copyright (C) 2010, 2011 Anaël Verrier <elghinn@free.fr>
-# Copyright (C) 2014, 2020 kaliko <kaliko@azylum.org>
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3 only.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# SPDX-FileCopyrightText: 2010, 2011 Anaël Verrier <elghinn@free.fr>
+# SPDX-FileCopyrightText: 2014, 2020 kaliko <kaliko@azylum.org>
 
 from .sid import botcmd
 
@@ -31,6 +18,20 @@ class Plugin:
     def __init__(self, bot):
         self.bot = bot
         self.log = bot.log.getChild(self.__class__.__name__)
+        #: :py:obj:`list` : List of tuples (event, handler)
+        self.handlers = []
+
+    def add_handlers(self):
+        """Add handlers declared in self.hanlders"""
+        for event, handler in self.handlers:
+            self.log.debug(f'Add {event} > {self.__class__.__name__}().{handler.__name__}')
+            self.bot.add_event_handler(event, handler)
+
+    def rm_handlers(self):
+        """Remove handlers declared in self.hanlders"""
+        for event, handler in self.handlers:
+            self.log.debug(f'Remove {event} > {self.__class__.__name__}().{handler.__name__}')
+            self.bot.del_event_handler(event, handler)
 
     def send(self, dest, msg, mtype='chat'):
         """Send msg to dest
@@ -67,4 +68,5 @@ class Plugin:
         self.send(to, msg, mtype=rcv['type'])
 
     def shutdown(self):
+        """Empty method to override. Called on bot shutdown"""
         pass