From 1914cfe00365e67e8d82554cd10d2e35f68ad60d Mon Sep 17 00:00:00 2001 From: mathieui Date: Mon, 11 May 2015 23:35:47 +0200 Subject: Add a cyberplugin --- doc/source/plugins/cyber.rst | 6 ++++++ doc/source/plugins/index.rst | 6 ++++++ plugins/cyber.py | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 doc/source/plugins/cyber.rst create mode 100644 plugins/cyber.py diff --git a/doc/source/plugins/cyber.rst b/doc/source/plugins/cyber.rst new file mode 100644 index 00000000..40bc5eb8 --- /dev/null +++ b/doc/source/plugins/cyber.rst @@ -0,0 +1,6 @@ +.. _cyber-plugin: + +Cyber +===== + +.. automodule:: cyber diff --git a/doc/source/plugins/index.rst b/doc/source/plugins/index.rst index 9df47c3b..b5969fd9 100644 --- a/doc/source/plugins/index.rst +++ b/doc/source/plugins/index.rst @@ -87,6 +87,11 @@ Plugin index Close all tabs except MUCs and the roster. + Cyber + :ref:`Documentation ` + + Add a cybertouch to your messages. + Day Change :ref:`Documentation ` @@ -297,3 +302,4 @@ Plugin index pipe_cmd close_all reorder + cyber diff --git a/plugins/cyber.py b/plugins/cyber.py new file mode 100644 index 00000000..67d6cdc7 --- /dev/null +++ b/plugins/cyber.py @@ -0,0 +1,40 @@ +""" +This plugin adds a "cyber" prefix to a random word in your chatroom messages. + +Usage +----- + +Say something in a MUC tab. + +Configuration options +--------------------- + +.. glossary:: + + frequency + **Default:** ``10`` + + The percentage of the time the plugin will activate (randomly). 100 for every message, <= 0 for never. +""" + +from plugin import BasePlugin +from random import choice, randint +import re + + +DEFAULT_CONFIG = {'cyber': {'frequency': 10}} + +class Plugin(BasePlugin): + + default_config = DEFAULT_CONFIG + + def init(self): + self.api.add_event_handler('muc_say', self.cyberize) + + def cyberize(self, msg, tab): + if randint(1, 100) > self.config.get('frequency'): + return + words = [word for word in re.split('\W+', msg['body']) if len(word) > 3] + if words: + word = choice(words) + msg['body'] = msg['body'].replace(word, 'cyber' + word) -- cgit v1.2.3