From 57e586531db1893849a73b27f8b7dea263b96a82 Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 31 Mar 2012 01:24:37 +0200 Subject: Add a /tell plugin --- plugins/tell.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 plugins/tell.py (limited to 'plugins/tell.py') 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 \nTell: will tell of when he next joins.') + self.add_tab_command(tabs.MucTab, 'untell', self.command_untell, + '/untell \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 """ + 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 """ + 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]), '') + -- cgit v1.2.3