From 5038367b9251012beffab4d6ebcfb26f44c42105 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Wed, 1 May 2013 18:59:09 +0200 Subject: [PATCH] Add a new replace_word plugin. --- plugins/replace_word.py | 46 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 plugins/replace_word.py diff --git a/plugins/replace_word.py b/plugins/replace_word.py new file mode 100644 index 00000000..6abb1702 --- /dev/null +++ b/plugins/replace_word.py @@ -0,0 +1,46 @@ +""" +Replace some word with some other word in a message before sending it. + + +Installation +------------ +You only have to load the plugin. + +.. code-block:: none + + /load replace_word + +Configuration example +--------------------- +.. code-block:: ini + +[replace_word] +# How to appear casual in your daily conversations. +yes = yep +no = nope + +Usage +----- +Just use the word in a message. It will be replaced automatically. + +""" + +from plugin import BasePlugin +import tabs +import re + +class Plugin(BasePlugin): + def init(self): + self.api.add_event_handler('conversation_say', self.replace_pattern) + self.api.add_event_handler('muc_say', self.replace_pattern) + self.api.add_event_handler('private_say', self.replace_pattern) + + def replace_pattern(self, message, tab): + """ + Look for a given word in the message and replace it by the corresponding word. + """ + body = message['body'] + for before in self.config.options("replace_word"): + after = self.config.get(before, before) + body = re.sub(r"\b%s\b" % before, after, body) + message['body'] = body