summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/tell.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/plugins/tell.py b/plugins/tell.py
new file mode 100644
index 00000000..bcb488b7
--- /dev/null
+++ b/plugins/tell.py
@@ -0,0 +1,56 @@
+from plugin import BasePlugin
+import tabs
+import common
+
+class Plugin(BasePlugin):
+ def init(self):
+ self.add_tab_command(tabs.MucTab, 'tell', self.command_tell,
+ '/tell <nick> <message>\nTell: will tell <nick> of <message> when he next joins.')
+ self.add_tab_command(tabs.MucTab, 'untell', self.command_untell,
+ '/untell <nick>\nUntell: will remove the saved messages from /tell.',
+ self.completion_untell)
+ self.add_event_handler('muc_join', self.on_join)
+ # {tab -> {nick -> [messages]}
+ self.tabs = {}
+
+ def on_join(self, presence, tab):
+ if not tab in self.tabs:
+ return
+ nick = presence['from'].resource
+ if not nick in self.tabs[tab]:
+ return
+ for i in self.tabs[tab][nick]:
+ tab.command_say("%s: %s" % (nick, i))
+ del self.tabs[tab][nick]
+
+ def command_tell(self, args):
+ """/tell <nick> <message>"""
+ arg = common.shell_split(args)
+ if len(arg) != 2:
+ self.core.command_help('tell')
+ return
+ nick, msg = arg
+ tab = self.core.current_tab()
+ if not tab in self.tabs:
+ self.tabs[tab] = {}
+ if not nick in self.tabs[tab]:
+ self.tabs[tab][nick] = []
+ self.tabs[tab][nick].append(msg)
+ self.core.information('Will tell %s' % nick, 'Info')
+
+ def command_untell(self, args):
+ """/untell <nick>"""
+ tab = self.core.current_tab()
+ if not tab in self.tabs:
+ return
+ nick = args
+ if not nick in self.tabs[tab]:
+ return
+ del self.tabs[tab][nick]
+
+ def completion_untell(self, the_input):
+ tab = self.core.current_tab()
+ if not tab in self.tabs:
+ return the_input.auto_completion([], '')
+ return the_input.auto_completion(list(self.tabs[tab]), '')
+