X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sid%2Fecho.py;h=534163c378c95df65e0ad888786c4c5481ccbf29;hb=dbc1b2e6149234b8571425b6684a2858fa52c545;hp=cbf2eabf272f098be976327fb760d3d3286a5a57;hpb=2071fc235dc07a522911a760983f40ffd51b366f;p=sid.git diff --git a/sid/echo.py b/sid/echo.py index cbf2eab..534163c 100644 --- a/sid/echo.py +++ b/sid/echo.py @@ -18,6 +18,8 @@ from .plugin import Plugin, botcmd class Echo(Plugin): + """Drop a message to be sent when someone gets online. + """ def __init__(self, bot): Plugin.__init__(self, bot) @@ -31,13 +33,16 @@ class Echo(Plugin): bot.add_event_handler("muc::%s::presence" % self.bot.room, self.log_presence) def log_presence(self, pres): - self.log.debug('{0}: {1}'.format(pres['muc']['nick'], pres['type'])) + """Register presence""" + self.log.debug('%s: %s', pres['muc']['nick'], pres['type']) nick = pres['muc']['nick'] self.presence.update({nick: (pres['muc']['role'], pres['type'])}) self.log.debug(self.presence) if pres['type'] == 'available': while self.inbox.get(nick, []): - self.send(self.inbox.get(nick).pop()) + self.send(self.bot.room, + self.inbox.get(nick).pop(), + mtype='groupchat') self.inbox.pop(nick) @botcmd @@ -46,33 +51,40 @@ class Echo(Plugin): !tell queue : messages in queue !tell : append to in queue""" if not len(args): - self.send('Missing arguments:\n{}'.format(self.tell.__doc__)) + msg = 'Missing arguments:\n{}'.format(self.tell.__doc__) + self.reply(message, msg) return if len(args) == 1: if args[0] == 'queue': - self.send('\n'.join(['{0}:\n\t{1}'.format(k, '\n'.join(v)) - for k, v in self.inbox.items()])) + msg = '\n'.join(['{0}:\n\t{1}'.format(k, '\n'.join(v)) + for k, v in self.inbox.items()]) + self.reply(message, msg) return if args[0] == 'purge': sender = message['from'].resource if self.presence[sender][0] == 'moderator': - self.online = set() + self.inbox = dict() return if len(args) < 2: - self.send('Please provide a message:\n{}'.format(self.tell.__doc__)) + msg = 'Please provide a message:\n{}'.format(self.tell.__doc__) + self.reply(message, msg) return + self._handle_msg(message) + + def _handle_msg(self, message): + """Format and drop message in the inbox""" sender = message['from'].resource recipient = message['body'].split()[1] tell_msg = ' '.join(message['body'].split()[2:]) - self.log.debug('{0}: {1}'.format(recipient, tell_msg)) - letter = '{0}, {1} told me to tell you: {2}'.format(recipient, sender, tell_msg) + self.log.debug('%s: %s', recipient, tell_msg) + letter = '{0}, {1} wanted you to know: {2}'.format(recipient, sender, tell_msg) if (self.presence.get(recipient) and self.presence[recipient][1] == 'available'): return if recipient in self.inbox.keys(): - self.inbox[recipient].append(letter) + self.inbox[recipient].append(letter) else: - self.inbox[recipient] = [letter] + self.inbox[recipient] = [letter] # VIM MODLINE