gozerbot.plugs.user

user related commands

gozerbot.plugs.user.handle_addperm(bot, ievent)

user-addperm <name> <perm> .. add permission.

gozerbot.plugs.user.handle_addpermit(bot, ievent)

<name> <permit> - add permit to permit list of <name>.

gozerbot.plugs.user.handle_addstatus(bot, ievent)

<name> <status> - add status to user data.

gozerbot.plugs.user.handle_adduser(bot, ievent)

<name> <userhost> - introduce a new user to the bot.

gozerbot.plugs.user.handle_adduserhost(bot, ievent)

<name> <userhost> - add to userhosts to user data.

gozerbot.plugs.user.handle_check(bot, ievent)

<nick> - get user data of <nick>.

gozerbot.plugs.user.handle_delemail(bot, ievent)

user-delemail .. reset email of user giving the command.

gozerbot.plugs.user.handle_delete(bot, ievent)

<name> - remove user.

gozerbot.plugs.user.handle_delperm(bot, ievent)

<name> <perm> - delete permission of name.

gozerbot.plugs.user.handle_delstatus(bot, ievent)

<name> <status> - delete status of name.

gozerbot.plugs.user.handle_deluserhost(bot, ievent)

<name> <userhost> - remove from userhosts of name.

gozerbot.plugs.user.handle_email(bot, ievent)

no arguments - show email of user giving the command.

gozerbot.plugs.user.handle_getemail(bot, ievent)

<name> - get email of name.

gozerbot.plugs.user.handle_getname(bot, ievent)

<nick> - fetch name of nick.

gozerbot.plugs.user.handle_getperms(bot, ievent)

<name> - get permissions of a user.

gozerbot.plugs.user.handle_getstatus(bot, ievent)

<name> - get status of name.

gozerbot.plugs.user.handle_getuserhosts(bot, ievent)

<name> - get userhosts of a user.

gozerbot.plugs.user.handle_getuserperm(bot, ievent)

<perm> - list users with permission <perm>.

gozerbot.plugs.user.handle_getuserstatus(bot, ievent)

<status> - list users with status <status>.

gozerbot.plugs.user.handle_match(bot, ievent)

<userhost> - get data of <userhost>.

gozerbot.plugs.user.handle_meet(bot, ievent)

<nick> - introduce a new user to the bot.

gozerbot.plugs.user.handle_merge(bot, ievent)

<name> <nick> - merge the userhost into a already existing user.

gozerbot.plugs.user.handle_name(bot, ievent)

no arguments - show name of user giving the command.

gozerbot.plugs.user.handle_names(bot, ievent)

no aruguments - show registered users.

gozerbot.plugs.user.handle_permit(bot, ievent)

no arguments - get permit list of user giving the command.

gozerbot.plugs.user.handle_perms(bot, ievent)

no arguments - get permission of the user given the command.

gozerbot.plugs.user.handle_setemail(bot, ievent)

<name> <email> - set email of name.

gozerbot.plugs.user.handle_show(bot, ievent)

<name> - get data of <name>.

gozerbot.plugs.user.handle_status(bot, ievent)

no arguments - get status of user given the command.

gozerbot.plugs.user.handle_userdelpermit(bot, ievent)

<name> <permit> - remove (name, permit) from permit list.

gozerbot.plugs.user.handle_userhosts(bot, ievent)

no arguments - get userhosts of user giving the command.

gozerbot.plugs.user.handle_userscan(bot, ievent)

<txt> - scan for user.

gozerbot.plugs.user.handle_usersearch(bot, ievent)

<what> - search for user matching given userhost.

gozerbot.plugs.user.handle_whoami(bot, ievent)

no arguments - get your username.

CODE

# gozerbot/plugs/user.py
#
#

""" user related commands """

__status__ = "seen"

gozerbot imports

from gozerbot.utils.generic import getwho, stripident
from gozerbot.utils.exception import handle_exception
from gozerbot.utils.log import rlog
from gozerbot.utils.name import stripname
from gozerbot.users import users
from gozerbot.commands import cmnds
from gozerbot.examples import examples
from gozerbot.aliases import aliasdel, aliasset
from gozerbot.plughelp import plughelp
from gozerbot.tests import tests

plughelp

plughelp.add('user', 'manage users')

whoami command

def handle_whoami(bot, ievent):
    """ no arguments - get your username. """
    ievent.reply('%s' % users.getname(ievent.userhost))

cmnds.add('user-whoami', handle_whoami, 'USER')
examples.add('user-whoami', 'get your username', 'user-whoami')
aliasset('whoami', 'user-whoami')
tests.add('whoami')

meet command

def handle_meet(bot, ievent):
    """ <nick> - introduce a new user to the bot. """
    try: nick = ievent.args[0]
    except IndexError: ievent.missing('<nick>') ; return
    if users.exist(nick): ievent.reply('there is already a user with username %s' % nick) ; return
    userhost = getwho(bot, nick)
    if not userhost: ievent.reply("can't find userhost of %s" % nick) ; return
    username = users.getname(userhost)
    if username:
        ievent.reply('we already have a user with userhost %s (%s)' % (userhost, username))
        return
    result = 0
    name = stripname(nick.lower())
    result = users.add(name, [userhost, ], ['USER', ])
    if result: ievent.reply('%s (%s) added to user database' % (nick, name))
    else: ievent.reply('add failed')

cmnds.add('user-meet', handle_meet, ['OPER', 'MEET'])
examples.add('user-meet', 'introduce <nick> to the bot', 'user-meet dunker')
aliasset('meet', 'user-meet')
tests.add('meet test').add('delete test')

user-add command

def handle_adduser(bot, ievent):
    """ <name> <userhost> - introduce a new user to the bot. """
    try: (name, userhost) = ievent.args
    except ValueError: ievent.missing('<name> <userhost>') ; return
    username = users.getname(userhost)
    if username:
        ievent.reply('we already have a user with userhost %s (%s)' % (userhost, username))
        return
    result = 0
    name = stripname(name.lower())
    result = users.add(name, [userhost, ], ['USER', ])
    if result: ievent.reply('%s added to user database' % name)
    else: ievent.reply('add failed')

cmnds.add('user-add', handle_adduser, 'OPER')
examples.add('user-add', 'add <name> with <userhost> to the bot', 'user-add dunker bart@localhost')
tests.add('user-add mtest1 mekker@test1', 'mtest1 added to user database').add('delete mtest1')

merge command

def handle_merge(bot, ievent):
    """ <name> <nick> - merge the userhost into a already existing user. """
    if len(ievent.args) != 2: ievent.missing('<name> <nick>') ; return
    name, nick = ievent.args
    name = name.lower()
    if users.gotperm(name, 'OPER') and not users.allowed(ievent.userhost, 'OPER'):
        ievent.reply("only OPER perm can merge with OPER user")
        return
    if name == 'owner' and not bot.ownercheck(ievent, "can merge with owner user"): return
    if not users.exist(name): ievent.reply("we have no user %s" % name) ; return
    userhost = getwho(bot, nick)
    if not userhost: ievent.reply("can't find userhost of %s" % nick) ; return
    username = users.getname(userhost)
    if username:
        ievent.reply('we already have a user with userhost %s (%s)' % (userhost, username))
        return
    result = users.merge(name, userhost)
    if result: ievent.reply('%s merged' % nick)
    else: ievent.reply('merge failed')

cmnds.add('user-merge', handle_merge, ['OPER', 'MEET'])
examples.add('user-merge', 'merge record with <name> with userhost from <nick>', 'merge bart dunker')
aliasset('merge', 'user-merge')
tests.add('user-add mtest2 mekker@test2').add('merge mtest2 bottest', 'bottest merged').add('delete mtest2')

user-del command

def handle_delete(bot, ievent):
    """ <name> - remove user. """
    if len(ievent.args) == 0: ievent.missing('<name>') ; return
    name = ievent.args[0].lower()
    if name == 'owner': ievent.reply("can't delete owner") ; return
    result = 0
    name = name.lower()
    result = users.delete(name)
    if result: ievent.reply('%s deleted' % name)
    else: ievent.reply('delete of %s failed' % name)

cmnds.add('user-del', handle_delete, 'OPER')
examples.add('user-del', 'delete user with <username>' , 'user-del dunker')
aliasset('delete', 'user-del')
tests.add('user-add mtest3 mekker@test3').add('delete mtest3', 'mtest3 deleted')

user-scan command

def handle_userscan(bot, ievent):
    """ <txt> - scan for user. """
    try: name = ievent.args[0]
    except IndexError: ievent.missing('<txt>') ; return
    name = name.lower()
    names = users.names()
    result = []
    for i in names:
        if i.find(name) != -1: result.append(i)
    if result: ievent.reply("users matching %s: " % name, result, dot=True)
    else: ievent.reply('no users matched') ; return

cmnds.add('user-scan', handle_userscan, 'OPER')
examples.add('user-scan', 'search database for matching usernames', 'user-scan dunk')
aliasset('us', 'user-scan')
tests.add('user-add mtest4 mekker@test4').add('user-scan mte', 'mtest4').add('delete mtest4')

user-names command

def handle_names(bot, ievent):
    """ no aruguments - show registered users. """
    ievent.reply("usernames: ", users.names(), dot=True)

cmnds.add('user-names', handle_names, 'OPER')
examples.add('user-names', 'show names of registered users', 'user-names')
aliasset('names', 'user-names')
tests.add('user-add mtest5 mekker@test').add('user-names', 'mtest5').add('delete mtest5')

user-name command

def handle_name(bot, ievent):
    """ no arguments - show name of user giving the command. """
    ievent.reply('your name is %s' % users.getname(ievent.userhost))

cmnds.add('user-name', handle_name, 'USER')
examples.add('user-name', 'show name of user giving the commands', 'user-name')
aliasset('name', 'user-name')
tests.add('user-name', 'exec')

user-getname command

def handle_getname(bot, ievent):
    """ <nick> - fetch name of nick. """
    try: nick = ievent.args[0]
    except IndexError: ievent.missing("<nick>") ; return
    userhost = getwho(bot, nick)
    if not userhost: ievent.reply("can't find userhost of %s" % nick) ; return
    name = users.getname(userhost)
    if not name: ievent.reply("can't find user for %s" % userhost) ; return
    ievent.reply(name)

cmnds.add('user-getname', handle_getname, 'USER')
examples.add('user-getname', 'user-getname <nick> .. get the name of <nick>', 'user-getname dunker')
aliasset('gn', 'user-getname')
aliasset('getname', 'user-getname')
tests.add('user-getname test')

def handle_addperm(bot, ievent):
    """ user-addperm <name> <perm> .. add permission. """
    if len(ievent.args) != 2: ievent.missing('<name> <perm>') ; return
    name, perm = ievent.args
    perm = perm.upper()
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    result = 0
    if users.gotperm(name, perm): ievent.reply('%s already has permission %s' % (name, perm)) ; return
    result = users.addperm(name, perm)
    if result: ievent.reply('%s perm added' % perm)
    else: ievent.reply('perm add failed')

cmnds.add('user-addperm', handle_addperm, 'OPER')
examples.add('user-addperm', 'add permissions to user <name>', 'user-addperm dunker rss')
aliasset('setperms', 'user-addperm')
aliasset('addperms', 'user-addperm')
tests.add('user-add mtest6 mekker@test6', 'mtest6').add('user-addperm mtest6 mekker', 'MEKKER perm added').add('delete mtest6')

def handle_getperms(bot, ievent):
    """ <name> - get permissions of a user. """
    try: name = ievent.args[0]
    except IndexError: ievent.missing('<name>') ; return
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    perms = users.getuserperms(name)
    if perms: ievent.reply("permissions of %s: " % name, perms, dot=True)
    else: ievent.reply('%s has no permissions set' % name)

cmnds.add('user-getperms', handle_getperms, 'OPER')
examples.add('user-getperms', 'user-getperms <name> .. get permissions of <name>', 'user-getperms dunker')
aliasset('getperms', 'user-getperms')
tests.add('user-add mtest7 mekker@test7').add('user-addperm mtest7 mekker').add('user-getperms mtest7' , 'MEKKER').add('delete mtest7')

user-perms command

def handle_perms(bot, ievent):
    """  no arguments - get permission of the user given the command. """
    if ievent.rest: ievent.reply("use getperms to get the permissions of somebody else") ; return
    name = users.getname(ievent.userhost)
    if not name: ievent.reply("can't find username for %s" % ievent.userhost) ; return
    perms = users.getuserperms(name)
    if perms: ievent.reply("you have permissions: ", perms, dot=True)

cmnds.add('user-perms', handle_perms, 'USER')
examples.add('user-perms', 'get permissions', 'user-perms')
aliasset('perms', 'user-perms')
tests.add('user-perms', 'USER')

user-delperm command

def handle_delperm(bot, ievent):
    """ <name> <perm> - delete permission of name. """
    if len(ievent.args) != 2: ievent.missing('<name> <perm>') ; return
    name, perm = ievent.args
    perm = perm.upper()
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    result = users.deluserperm(name, perm)
    if result: ievent.reply('%s perm removed' % perm)
    else: ievent.reply("%s has no %s permission" % (name, perm)) ; return

cmnds.add('user-delperm', handle_delperm, 'OPER')
examples.add('user-delperms', 'delete permission', 'user-delperms dunker rss')
tests.add('user-add mtest8 mekker@test8').add('user-addperm mtest8mekker').add('user-delperm mtest8 mekker', 'MEKKER').add('delete mtest8')

user-addstatus command

def handle_addstatus(bot, ievent):
    """ <name> <status>  - add status to user data. """
    if len(ievent.args) != 2: ievent.missing('<name> <status>') ; return
    name, status = ievent.args
    status = status.upper()
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    if users.gotstatus(name, status): ievent.reply('%s already has status %s' % (name, status)) ; return
    result = users.addstatus(name, status)
    if result: ievent.reply('%s status added' % status)
    else: ievent.reply('add failed')

cmnds.add('user-addstatus', handle_addstatus, 'OPER')
examples.add('user-addstatus', 'add status to user data', 'user-addstatus dunker #dunkbots')
aliasset('setstatus', 'user-addstatus')
aliasset('addstatus', 'user-addstatus')
tests.add('user-add mtest9 mekker@test9').add('user-addstatus mtest9 mekker', 'MEKKER status added').add('delete mtest9')

user-getstatus command

def handle_getstatus(bot, ievent):
    """ <name> - get status of name. """
    try: name = ievent.args[0]
    except IndexError: ievent.missing('<name>') ; return
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    status = users.getuserstatuses(name)
    if status: ievent.reply("status of %s: " % name, status, dot=True)
    else: ievent.reply('%s has no status set' % name)

cmnds.add('user-getstatus', handle_getstatus, 'OPER')
examples.add('user-getstatus', 'get status of <name>', 'user-getstatus dunker')
aliasset('getstatus', 'user-getstatus')
tests.add('user-add mtest10 mekker@test10').add('user-addstatus mtest10 mekker', 'MEKKER status added').add('user-getstatus mtest10', 'MEKKER').add('delete mtest10')

user-status command

def handle_status(bot, ievent):
    """ no arguments - get status of user given the command. """
    status = users.getstatuses(ievent.userhost)
    if status: ievent.reply("you have status: ", status, dot=True)
    else: ievent.reply('you have no status set')

cmnds.add('user-status', handle_status, 'USER')
examples.add('user-status', 'get status', 'user-status')
aliasset('status', 'user-status')
tests.add('user-status')

user-delstatus command

def handle_delstatus(bot, ievent):
    """ <name> <status> - delete status of name. """
    if len(ievent.args) != 2: ievent.missing('<name> <status>') ; return
    name, status = ievent.args
    status = status.upper()
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    result = users.deluserstatus(name, status)
    if result: ievent.reply('%s status deleted' % status)
    else: ievent.reply("%s has no %s status" % (name, status)) ; return

cmnds.add('user-delstatus', handle_delstatus, 'OPER')
examples.add('user-delstatus', 'delete stauts from user data', 'user-delstatus dunker #dunkbots')
aliasset('delstatus', 'user-delstatus')
tests.add('user-add mtest11 mekker@test11').add('user-addstatus mtest11 mekker').add('user-delstatus mtest11 mekker', 'MEKKER status deleted').add('delete mtest11')

user-adduserhost command

def handle_adduserhost(bot, ievent):
    """ <name> <userhost> - add to userhosts to user data. """
    if len(ievent.args) != 2: ievent.missing('<name> <userhost>') ; return
    name, userhost = ievent.args
    name = name.lower()
    if name == 'owner' and not bot.ownercheck(ievent, 'can adduserhost to owner'): return
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    if users.gotuserhost(name, userhost): ievent.reply('%s already has userhost %s' % (name, userhost)) ; return
    result = users.adduserhost(name, userhost)
    if result: ievent.reply('userhost added')
    else: ievent.reply('add failed')

cmnds.add('user-adduserhost', handle_adduserhost, 'OPER')
examples.add('user-adduserhost', 'add userhost to user data', 'user-adduserhost dunker bart@%.a2000.nl')
aliasset('adduserhost', 'user-adduserhost')
aliasset('adduserhosts', 'user-adduserhost')
tests.add('user-add mtest12 mekker@test12').add('user-adduserhost mtest12 mekker2@test122', 'userhost added').add('delete mtest12')

user-deluserhost command

def handle_deluserhost(bot, ievent):
    """ <name> <userhost> - remove from userhosts of name. """
    if len(ievent.args) != 2: ievent.missing('<name> <userhost>') ; return
    name, userhost = ievent.args
    name = name.lower()
    if name == 'owner'  and not bot.ownercheck(ievent, 'can delete userhosts from owner'): return
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    result = users.deluserhost(name, userhost)
    if result: ievent.reply('userhost removed')
    else: ievent.reply("%s has no %s in userhost list" % (name, userhost)) ; return

cmnds.add('user-deluserhost', handle_deluserhost, 'OPER')
examples.add('user-deluserhost', 'delete from usershosts of <name> userhost <userhost>','user-deluserhost dunker bart1@bla.a2000.nl')
aliasset('deluserhost', 'user-deluserhost')
aliasset('deluserhosts', 'user-deluserhost')
tests.add('user-add mtest32 mekker@test32').add('user-adduserhost mtest12 mekker2@test32').add('user-deluserhost mtest12 mekker2@test32', 'userhost removed').add('delete mtest32')

user-getuserhosts command

def handle_getuserhosts(bot, ievent):
    """ <name> - get userhosts of a user. """
    try: who = ievent.args[0]
    except IndexError: ievent.missing('<name>') ; return
    who = who.lower()
    userhosts = users.getuserhosts(who)
    if userhosts: ievent.reply("userhosts of %s: " % who, userhosts, dot=True)
    else: ievent.reply("can't find user %s" % who)

cmnds.add('user-getuserhosts', handle_getuserhosts, 'OPER')
examples.add('user-getuserhosts', 'get userhosts of <name>', 'getuserhosts dunker')
aliasset('getuserhosts', 'user-getuserhosts')
tests.add('user-add mtest13 mekker@test13').add('user-adduserhost mtest13 mekker@test13').add('user-getuserhosts mtest13', 'mekker@test13').add('delete mtest13')

user-userhosts command

def handle_userhosts(bot, ievent):
    """ no arguments -  get userhosts of user giving the command. """
    userhosts = users.gethosts(ievent.userhost)
    if userhosts: ievent.reply("you have userhosts: ", userhosts, dot=True)

cmnds.add('user-userhosts', handle_userhosts, 'USER')
examples.add('user-userhosts', 'get userhosts', 'user-userhosts')
aliasset('userhosts', 'user-userhosts')
tests.add('user-userhosts')

user-getemail command

def handle_getemail(bot, ievent):
    """ <name> - get email of name. """
    try: name = ievent.args[0]
    except IndexError: ievent.missing('<name>') ; return
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    email = users.getuseremail(name)
    if email: ievent.reply(email)
    else: ievent.reply('no email set')

cmnds.add('user-getemail', handle_getemail, 'USER')
examples.add('user-getemail', 'get email from user <name>', 'user-getemail dunker')
aliasset('getemail', 'user-getemail')
tests.add('user-add mtest14 mekker@test14').add('user-setemail mtest14 mekker@test14').add('user-getemail mtest14', 'mekker@test14').add('delete mtest14')

user-setemail command

def handle_setemail(bot, ievent):
    """ <name> <email> - set email of name. """
    try: name, email = ievent.args
    except ValueError: ievent.missing('<name> <email>') ; return
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    users.setemail(name, email)
    ievent.reply('email set')

cmnds.add('user-setemail', handle_setemail, 'OPER')
examples.add('user-setemail', 'set email of user <name>', 'user-setemail dunker bart@gozerbot.org')
aliasset('setemail', 'user-setemail')
tests.add('user-add mtest15 mekker@test15').add('user-setemail mtest15 mekker@test15', 'email set').add('delete mtest15')

user-email command

def handle_email(bot, ievent):
    """ no arguments -  show email of user giving the command. """
    if len(ievent.args) != 0:
        ievent.reply('use getemail to get the email address of an user, email shows your own mail address')
        return
    email = users.getemail(ievent.userhost)
    if email: ievent.reply(email)
    else: ievent.reply('no email set')

cmnds.add('user-email', handle_email, 'USER')
examples.add('user-email', 'get email', 'user-email')
aliasset('email', 'user-email')
tests.add('user-setemail mekker@mekker').add('user-email', 'mekker@mekker')

user-delemail command

def handle_delemail(bot, ievent):

    """ user-delemail .. reset email of user giving the command. """

    name = users.getname(ievent.userhost)
    if not name: ievent.reply("can't find user for %s" % ievent.userhost) ; return
    result = users.delallemail(name)
    if result: ievent.reply('email removed')
    else: ievent.reply('delete failed')

cmnds.add('user-delemail', handle_delemail, 'OPER')
examples.add('user-delemail', 'reset email', 'user-delemail')
aliasset('delemail', 'user-delemail')
tests.add('user-setemail mekker@email').add('user-delemail', 'email removed')

user-addpermit command

def handle_addpermit(bot, ievent):
    """ <name> <permit> - add permit to permit list of <name>. """
    try: who, what = ievent.args
    except ValueError: ievent.missing("<name> <permit>") ; return
    if not users.exist(who): ievent.reply("can't find username of %s" % who) ; return
    name = users.getname(ievent.userhost)
    if users.gotpermit(name, (who, what)): ievent.reply('%s is already allowed to do %s' % (who, what)) ; return
    result = users.addpermit(name, who, what)
    if result: ievent.reply('permit added')
    else: ievent.reply('add failed')

cmnds.add('user-addpermit', handle_addpermit, 'USER')
examples.add('user-addpermit', 'permit nick access to <what> .. use setperms to add permissions', 'user-addpermit dunker todo')
aliasdel('allow')
tests.add('user-add mtest16 mekker@test16').add('user-addpermit mtest16 todo', 'permit added').add('user-delpermit mtest16 todo').add('delete mtest16')

user-permit command

def handle_permit(bot, ievent):
    """ no arguments -  get permit list of user giving the command. """
    if ievent.rest:
        ievent.reply("use the user-addpermit command to allow somebody something, use getname <nick> to get the username of somebody,this command shows what permits you have")
        return
    name = users.getname(ievent.userhost)
    if not name: ievent.reply("can't find user for %s" % ievent.userhost) ; return
    permits = users.getuserpermits(name)
    if permits: ievent.reply("you permit the following: ", permits, dot=True)
    else: ievent.reply("you don't have any permits")

cmnds.add('user-permit', handle_permit, 'USER')
examples.add('user-permit', 'show permit of user giving the command', 'user-permit')
aliasset('permit', 'user-permit')
tests.add('user-add mtest17 mekker@test17').add('user-addpermit mtest17 todo', 'permit added').add('user-delpermit mtest17 todo').add('delete mtest17')

user-delpermit command

def handle_userdelpermit(bot, ievent):
    """ <name> <permit> - remove (name, permit) from permit list. """
    try: who, what = ievent.args
    except ValueError: ievent.missing("<name> <what>") ; return
    if not users.exist(who): ievent.reply("can't find registered name of %s" % who) ; return
    name = users.getname(ievent.userhost)
    if not users.gotpermit(name, (who, what)): ievent.reply('%s is already not allowed to do %s' % (who, what)) ; return
    result = users.deluserpermit(name, (who, what))
    if result: ievent.reply('%s denied' % what)
    else: ievent.reply('delete failed')

cmnds.add('user-delpermit', handle_userdelpermit, 'USER')
examples.add('user-delpermit', 'rmeove permit', 'user-delpermit dunker todo')
aliasdel('deny')
tests.add('user-add mtest18 mekker@test17').add('user-addpermit mtest18 todo', 'permit added').add('user-delpermit mtest18 todo').add('delete mtest18')

user-check command

def handle_check(bot, ievent):
    """ <nick> - get user data of <nick>. """
    try: nick = ievent.args[0]
    except IndexError: ievent.missing('<nick>') ; return
    userhost = getwho(bot, nick)
    if not userhost: ievent.reply("can't find userhost of %s" % nick) ; return
    name = users.getname(userhost)
    if not name: ievent.reply("can't find user") ; return
    userhosts = users.getuserhosts(name)
    perms = users.getuserperms(name)
    email = users.getuseremail(name)
    permits = users.getuserpermits(name)
    status = users.getuserstatuses(name)
    ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s permits: %s status: %s' % (name, str(userhosts), str(perms), str(email), str(permits), str(status)))

cmnds.add('user-check', handle_check, 'OPER')
examples.add('user-check', 'check user data of <nick>', 'user-check dunker')
aliasset('check', 'user-check')
tests.add('user-add mtest19 mekker@test19').add('user-check mtest19', 'mekker@test19').add('delete mtest19')

user-show command

def handle_show(bot, ievent):
    """ <name> - get data of <name>. """
    try: name = ievent.args[0]
    except IndexError: ievent.missing('<name>') ; return
    name = name.lower()
    if not users.exist(name): ievent.reply("can't find user %s" % name) ; return
    userhosts = str(users.getuserhosts(name))
    perms = str(users.getuserperms(name))
    email = str(users.getuseremail(name))
    permits = str(users.getuserpermits(name))
    status = str(users.getuserstatuses(name))
    ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s permits: %s status: %s' % (name, userhosts, perms, email, permits, status))

cmnds.add('user-show', handle_show, 'OPER')
examples.add('user-show', 'user-show <name> .. show data of <name>', 'user-show dunker')
tests.add('user-add mtest20 mekker@test20').add('user-show mtest20', 'mekker@test20').add("delete mtest20")

user-match command

def handle_match(bot, ievent):
    """ <userhost> - get data of <userhost>. """
    try: userhost = ievent.args[0]
    except IndexError: ievent.missing('<userhost>') ; return
    name = users.getname(userhost)
    if not name: ievent.reply("can't find user with userhost %s" % userhost) ; return
    userhosts = str(users.gethosts(userhost))
    perms = str(users.getperms(userhost))
    email = str(users.getemail(userhost))
    permits = str(users.getpermits(userhost))
    status = str(users.getstatuses(userhost))
    rlog(10, 'users', "matched called")
    ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s permits: %s status: %s' % (name, userhosts, perms, email, permits, status))

cmnds.add('user-match', handle_match, ['USER', 'OPER'])
examples.add('user-match', 'get user data from user matching <userhost>', 'user-match test@test')
aliasset('match', 'user-match')
tests.add('user-add mtest21 mekker@test21').add('user-match mekker@test21', 'mekker@test21').add("delete mtest21")

user-allstatus command

def handle_getuserstatus(bot, ievent):
    """ <status> - list users with status <status>. """
    try: status = ievent.args[0].upper()
    except IndexError: ievent.missing('<status>') ; return
    result = users.getstatususers(status)
    if result: ievent.reply("users with %s status: " % status, result, dot=True)
    else: ievent.reply("no users with %s status found" % status)
    return

cmnds.add('user-allstatus', handle_getuserstatus, 'OPER')
examples.add('user-allstatus', 'user-allstatus <status> .. get all users with <status> status', 'user-allstatus #dunkbots')
tests.add('user-allstatus')

user-allperm command

def handle_getuserperm(bot, ievent):
    """ <perm> - list users with permission <perm>. """
    try: perm = ievent.args[0].upper()
    except IndexError: ievent.missing('<perm>') ; return
    result = users.getpermusers(perm)
    if result: ievent.reply('users with %s permission: ' % perm, result, dot=True)
    else: ievent.reply("no users with %s permission found" % perm)
    return

cmnds.add('user-allperm', handle_getuserperm, 'OPER')
examples.add('user-allperm', 'get users with <perm> permission', 'user-allperm rss')
tests.add('user-allperm OPER', 'owner')

user-search command

def handle_usersearch(bot, ievent):
    """ <what> - search for user matching given userhost. """
    try: what = ievent.args[0]
    except IndexError: ievent.missing('<what>') ; return
    result = users.usersearch(what)
    if result:
        res = ["(%s) %s" % u for u in result]
        ievent.reply('users matching %s: ' % what, res, dot=True)
    else: ievent.reply('no userhost matching %s found' % what)

cmnds.add('user-search', handle_usersearch, 'OPER')
examples.add('user-search', 'search users userhosts', 'user-search gozerbot')
tests.add('user-search exe', 'exec')