dr.botzo, the IRC bot with Django integration.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

79 lines
2.5 KiB

"""
Echo - repeat text
Copyright (C) 2010 Brian S. Stephan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from Module import Module
class Echo(Module):
"""Repeat provided text."""
def register_handlers(self):
"""Hook handler functions into the IRC library."""
# register IRC regex handlers
self.irc.add_global_regex_handler('pubmsg', r'^!echo\s+(.*)$',
self.echo)
self.irc.add_global_regex_handler('privmsg', r'^!echo\s+(.*)$',
self.echo)
# register XML-RPC handlers
def echo_wrap(msg):
"""Get back the sent message.
Args:
msg the message to get returned
Returns:
msg
"""
return self.echo(None, None, None, False, (msg,))
self.irc.xmlrpc_register_function(echo_wrap, 'echo')
def unregister_handlers(self):
"""Unhook handler functions from the IRC library."""
self.irc.remove_global_regex_handler('pubmsg', r'^!echo\s+(.*)$',
self.echo)
self.irc.remove_global_regex_handler('privmsg', r'^!echo\s+(.*)$',
self.echo)
def echo(self, nick, userhost, event, from_admin, groups):
"""Return the message received.
Args:
nick source nickname (unused)
userhost source userhost (unused)
event IRC event, used in IRC reply, or none for direct call
from_admin whether or not the event came from an admin (unused)
groups tuple length 1, the message to echo
"""
msg = groups[0]
self.log.debug("replying with '{0:s}'".format(msg))
if event:
return self.irc.reply(event, msg)
else:
return msg
# vi:tabstop=4:expandtab:autoindent
# kate: indent-mode python;indent-width 4;replace-tabs on;