From ab1b7d343455f7e7b33320eacfdd83fb493b81da Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Fri, 30 Apr 2004 18:24:01 +0000 Subject: [PATCH] Initial checkin. --- plugins/UserInfo.py | 112 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 plugins/UserInfo.py diff --git a/plugins/UserInfo.py b/plugins/UserInfo.py new file mode 100644 index 000000000..c1ccccd55 --- /dev/null +++ b/plugins/UserInfo.py @@ -0,0 +1,112 @@ +#!/usr/bin/python + +### +# Copyright (c) 2004, Jeremiah Fincher +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +### + +""" +Maintains various arbitrary information on users. +""" + +__revision__ = "$Id$" +__author__ = 'Jeremy Fincher (jemfinch) ' + +import plugins + +import conf +import utils +import ircdb +import privmsgs +import registry +import callbacks + +conf.registerPlugin('UserInfo') +conf.registerUserValue(conf.users.plugins.UserInfo, 'name', + registry.String('', '')) +conf.registerUserValue(conf.users.plugins.UserInfo, 'email', + registry.String('', '')) +conf.registerUserValue(conf.users.plugins.UserInfo, 'pgpkey', + registry.String('', '')) +conf.registerUserValue(conf.users.plugins.UserInfo, 'gpgkey', + registry.String('', '')) + +def configure(advanced): + # This will be called by setup.py to configure this module. Advanced is + # a bool that specifies whether the user identified himself as an advanced + # user or not. You should effect your configuration by manipulating the + # registry as appropriate. + from questions import expect, anything, something, yn + conf.registerPlugin('UserInfo', True) + + +class UserInfo(callbacks.Privmsg): + def userinfo(self, irc, msg, args): + """[] + + Returns the arbitary data associated with the user . If + is not given, returns the data associated with the user giving the + command. + """ + name = privmsgs.getArgs(args, required=0, optional=1) + if not name: + name = msg.prefix + try: + ircdb.users.getUser(name) + except KeyError: + irc.errorNoUser() + return + L = [] + for s in ('name', 'email', 'pgpkey', 'gpgkey'): + v = self.userValue(s, name) + if v: + L.append('%s: %s' % (s.capitalize(), v)) + if L: + irc.reply(utils.commaAndify(L)) + else: + irc.reply('I don\'t have any info on that user.') + + def set(self, irc, msg, args): + """ + + Sets the name, email, or pgpkey of to . + """ + (name, value) = privmsgs.getArgs(args, required=2) + try: + self.setUserValue(msg.prefix, name, value) + irc.replySuccess() + except KeyError: + irc.errorNoUser() + except registry.NonExistentRegistryEntry: + irc.error('You may only associate data with "name", "email", ' + 'or "pgpkey".') + except registry.InvalidRegistryValue, e: + irc.error(str(e)) + +Class = UserInfo + +# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: