5
""" users related commands """
7
__copyright__ = 'this file is in the public domain'
9
from gozerbot.generic import getwho, stripident
10
from gozerbot.users import users
11
from gozerbot.commands import cmnds
12
from gozerbot.examples import examples
13
from gozerbot.aliases import aliases, aliasdel
14
from gozerbot.plughelp import plughelp
16
plughelp.add('user', 'manage users')
18
def handle_whoami(bot, ievent):
19
""" user-whoami .. get your username """
20
ievent.reply('%s' % users.getname(ievent.userhost))
22
cmnds.add('user-whoami', handle_whoami, 'USER')
23
examples.add('user-whoami', 'get your username', 'user-whoami')
24
aliases.data['whoami'] = 'user-whoami'
26
def handle_meet(bot, ievent):
27
""" user-meet <nick> .. introduce a new user to the bot """
29
nick = ievent.args[0].lower()
31
ievent.missing('<nick>')
34
ievent.reply('there is already a user with username %s' % nick)
36
userhost = getwho(bot, nick)
38
ievent.reply("can't find userhost of %s" % nick)
40
username = users.getname(userhost)
42
ievent.reply('we already have a user with userhost %s (%s)' % \
47
result = users.add(nick.lower(), [userhost, ], ['USER', ])
49
ievent.reply('ERROR: %s' % str(ex))
52
ievent.reply('%s added to user database' % nick)
54
ievent.reply('add failed')
56
cmnds.add('user-meet', handle_meet, ['OPER', 'MEET'])
57
examples.add('user-meet', 'user-meet <nick> .. introduce <nick> to the \
58
bot', 'user-meet dunker')
59
aliases.data['meet'] = 'user-meet'
61
def handle_adduser(bot, ievent):
62
""" user-aadd <name> <userhost> .. introduce a new user to the bot """
64
(name, userhost) = ievent.args
66
ievent.missing('<name> <userhost>')
68
username = users.getname(userhost)
70
ievent.reply('we already have a user with userhost %s (%s)' % \
75
result = users.add(name.lower(), [userhost, ], ['USER', ])
77
ievent.reply("ERROR: %s" % str(ex))
80
ievent.reply('%s added to user database' % name)
82
ievent.reply('add failed')
84
cmnds.add('user-add', handle_adduser, 'OPER')
85
examples.add('user-add', 'user-add <name> <userhost> .. add <name> with \
86
<userhost> to the bot', 'user-add dunker bart@localhost')
88
def handle_merge(bot, ievent):
89
""" user-merge <name> <nick> .. merge the userhost into a already \
91
if len(ievent.args) != 2:
92
ievent.missing('<name> <nick>')
94
name, nick = ievent.args
96
if users.gotperm(name, 'OPER') and not users.allowed(ievent.userhost, \
98
ievent.reply("only OPER perm can merge with OPER user")
100
if name == 'owner' and not bot.ownercheck(ievent, "can merge with owner \
103
if not users.exist(name):
104
ievent.reply("we have no user %s" % name)
106
userhost = getwho(bot, nick)
108
ievent.reply("can't find userhost of %s" % nick)
110
username = users.getname(userhost)
112
ievent.reply('we already have a user with userhost %s (%s)' % \
113
(userhost, username))
117
result = users.merge(name, userhost)
118
except Exception, ex:
119
ievent.reply("ERROR: %s" % str(ex))
122
ievent.reply('%s merged' % nick)
124
ievent.reply('merge failed')
126
cmnds.add('user-merge', handle_merge, ['OPER', 'MEET'])
127
examples.add('user-merge', 'user-merge <name> <nick> .. merge record with \
128
<name> with userhost from <nick>', 'merge bart dunker')
129
aliases.data['merge'] = 'user-merge'
131
def handle_delete(bot, ievent):
132
""" user-del <name> .. remove user """
133
if len(ievent.args) == 0:
134
ievent.missing('<name>')
136
name = ievent.args[0].lower()
138
ievent.reply("can't delete owner")
142
result = users.delete(name)
143
except Exception, ex:
144
ievent.reply("ERROR: %s" % str(ex))
147
ievent.reply('%s deleted' % name)
149
ievent.reply('delete of %s failed' % name)
151
cmnds.add('user-del', handle_delete, 'OPER')
152
examples.add('user-del', 'user-del <name> .. delete user with <username>' , \
154
aliases.data['delete'] = 'user-del'
156
def handle_userscan(bot, ievent):
157
""" user-scan <txt> .. scan for user """
159
name = ievent.args[0]
161
ievent.missing('<txt>')
164
names = users.names()
167
if i.find(name) != -1:
170
ievent.reply("users matching %s: " % name, result, dot=True)
172
ievent.reply('no users matched')
175
cmnds.add('user-scan', handle_userscan, 'OPER')
176
examples.add('user-scan', 'user-scan <txt> .. search database for matching \
177
usernames', 'user-scan dunk')
178
aliases.data['us'] = 'user-scan'
180
def handle_names(bot, ievent):
181
""" user-names .. show registered users """
182
ievent.reply("usernames: ", users.names(), dot=True)
184
cmnds.add('user-names', handle_names, 'OPER')
185
examples.add('user-names', 'show names of registered users', 'user-names')
186
aliases.data['names'] = 'user-names'
188
def handle_name(bot, ievent):
189
""" user-name .. show name of user giving the command """
190
ievent.reply('your name is %s' % users.getname(ievent.userhost))
192
cmnds.add('user-name', handle_name, 'USER')
193
examples.add('user-name', 'show name of user giving the commands', \
195
aliases.data['name'] = 'user-name'
197
def handle_getname(bot, ievent):
198
""" user-getname <nick> .. fetch name of nick """
200
nick = ievent.args[0]
202
ievent.missing("<nick>")
204
userhost = getwho(bot, nick)
206
ievent.reply("can't find userhost of %s" % nick)
208
name = users.getname(userhost)
210
ievent.reply("can't find user for %s" % userhost)
214
cmnds.add('user-getname', handle_getname, 'USER')
215
examples.add('user-getname', 'user-getname <nick> .. get the name of \
216
<nick>', 'user-getname dunker')
217
aliases.data['gn'] = 'user-getname'
218
aliases.data['getname'] = 'user-getname'
220
def handle_addperm(bot, ievent):
221
""" user-addperm <name> <perm> .. add permission """
222
if len(ievent.args) != 2:
223
ievent.missing('<name> <perm>')
225
name, perm = ievent.args
228
if not users.exist(name):
229
ievent.reply("can't find user %s" % name)
232
if users.gotperm(name, perm):
233
ievent.reply('%s already has permission %s' % (name, perm))
236
result = users.db.execute(""" INSERT INTO perms(name, perm) \
237
values(%s,%s) """, (name, perm))
238
except Exception, ex:
239
ievent.reply("ERROR: %s" % str(ex))
242
ievent.reply('%s perm added' % perm)
244
ievent.reply('perm add failed')
246
cmnds.add('user-addperm', handle_addperm, 'OPER')
247
examples.add('user-addperm', 'user-addperm <name> <perm> .. add permissions \
248
to user <name>', 'user-addperm dunker rss')
249
aliases.data['setperms'] = 'user-addperm'
250
aliases.data['addperms'] = 'user-addperm'
252
def handle_getperms(bot, ievent):
253
""" user-getperms <name> .. get permissions of name"""
255
name = ievent.args[0]
257
ievent.missing('<name>')
260
if not users.exist(name):
261
ievent.reply("can't find user %s" % name)
263
perms = users.db.execute(""" SELECT perm FROM perms WHERE \
268
permlist.append(i[0])
269
ievent.reply("permissions of %s: " % name, permlist, dot=True)
271
ievent.reply('%s has no permissions set' % name)
273
cmnds.add('user-getperms', handle_getperms, 'OPER')
274
examples.add('user-getperms', 'user-getperms <name> .. get permissions of \
275
<name>', 'user-getperms dunker')
276
aliases.data['getperms'] = 'user-getperms'
278
def handle_perms(bot, ievent):
279
""" user-perms .. get permission of the user given the command """
281
ievent.reply("use getperms to get the permissions of somebody else")
283
name = users.getname(ievent.userhost)
285
ievent.reply("can't find username for %s" % ievent.userhost)
287
perms = users.db.execute(""" SELECT perm FROM perms WHERE \
292
permlist.append(i[0])
293
ievent.reply("you have permissions: ", permlist, dot=True)
295
cmnds.add('user-perms', handle_perms, 'USER')
296
examples.add('user-perms', 'get permissions', 'user-perms')
297
aliases.data['perms'] = 'user-perms'
299
def handle_delperm(bot, ievent):
300
""" user-delperm <name> <perm> .. delete permission of name """
301
if len(ievent.args) != 2:
302
ievent.missing('<name> <perm>')
304
name, perm = ievent.args
307
if not users.exist(name):
308
ievent.reply("can't find user %s" % name)
312
result = users.db.execute(""" DELETE FROM perms WHERE name = %s AND \
313
perm = %s """, (name, perm))
314
except Exception, ex:
315
ievent.reply("ERROR: %s" % str(ex))
318
ievent.reply('%s perm removed' % perm)
320
ievent.reply("%s has no %s permission" % (name, perm))
323
cmnds.add('user-delperm', handle_delperm, 'OPER')
324
examples.add('user-delperms', 'delete from user <name> permission <perm>', \
325
'user-delperms dunker rss')
327
def handle_addstatus(bot, ievent):
328
""" user-addstatus <name> <status> .. add status of name """
329
if len(ievent.args) != 2:
330
ievent.missing('<name> <status>')
332
name, status = ievent.args
333
status = status.upper()
335
if not users.exist(name):
336
ievent.reply("can't find user %s" % name)
339
if users.gotstatus(name, status):
340
ievent.reply('%s already has status %s' % (name, status))
343
result = users.db.execute(""" INSERT INTO statuses(name, status) \
344
values(%s,%s) """, (name, status))
345
except Exception, ex:
346
ievent.reply("ERROR: %s" % str(ex))
349
ievent.reply('%s status added' % status)
351
ievent.reply('add failed')
353
cmnds.add('user-addstatus', handle_addstatus, 'OPER')
354
examples.add('user-addstatus', 'user-addstatus <name> <status>', \
355
'user-addstatus dunker #dunkbots')
356
aliases.data['setstatus'] = 'user-addstatus'
357
aliases.data['addstatus'] = 'user-addstatus'
359
def handle_getstatus(bot, ievent):
360
""" user-getstatus <name> .. get status of name """
362
name = ievent.args[0]
364
ievent.missing('<name>')
367
if not users.exist(name):
368
ievent.reply("can't find user %s" % name)
370
status = users.db.execute(""" SELECT status FROM statuses WHERE \
375
statuslist.append(i[0])
376
ievent.reply("status of %s: " % name, statuslist, dot=True)
378
ievent.reply('%s has no status set' % name)
380
cmnds.add('user-getstatus', handle_getstatus, 'OPER')
381
examples.add('user-getstatus', 'user-getstatus <name> .. get status of \
382
<name>', 'user-getstatus dunker')
383
aliases.data['getstatus'] = 'user-getstatus'
385
def handle_status(bot, ievent):
386
""" user-status .. get status of user given the command """
387
name = users.getname(ievent.userhost)
388
status = users.db.execute(""" SELECT status FROM statuses WHERE \
393
statuslist.append(i[0])
394
ievent.reply("you have status: ", statuslist, dot=True)
396
ievent.reply('you have no status set')
398
cmnds.add('user-status', handle_status, 'USER')
399
examples.add('user-status', 'get status', 'user-status')
400
aliases.data['status'] = 'user-status'
402
def handle_delstatus(bot, ievent):
403
""" user-delstatus <name> <status> .. delete status of name """
404
if len(ievent.args) != 2:
405
ievent.missing('<name> <status>')
407
name, status = ievent.args
408
status = status.upper()
410
if not users.exist(name):
411
ievent.reply("can't find user %s" % name)
415
result = users.db.execute(""" DELETE FROM statuses WHERE \
416
name = %s AND status = %s """, (name, status))
417
except Exception, ex:
418
ievent.reply("ERROR: %s" % str(ex))
421
ievent.reply('%s status deleted' % status)
423
ievent.reply("%s has no %s status" % (name, status))
426
cmnds.add('user-delstatus', handle_delstatus, 'OPER')
427
examples.add('user-delstatus', 'user-delstatus <name> <status>', \
428
'user-delstatus dunker #dunkbots')
429
aliases.data['delstatus'] = 'user-delstatus'
431
def handle_adduserhost(bot, ievent):
432
""" user-adduserhost <name> <userhost> .. add to userhosts of name """
433
if len(ievent.args) != 2:
434
ievent.missing('<name> <userhost>')
436
name, userhost = ievent.args
437
userhost = stripident(userhost)
439
if name == 'owner' and not bot.ownercheck(ievent, 'can adduserhost to \
442
if not users.exist(name):
443
ievent.reply("can't find user %s" % name)
445
if users.gotuserhost(name, userhost):
446
ievent.reply('%s already has userhost %s' % (name, userhost))
450
result = users.db.execute(""" INSERT INTO userhosts(name, \
451
userhost) values(%s, %s) """, (name, userhost))
452
except Exception, ex:
453
ievent.reply("ERROR: %s" % str(ex))
456
ievent.reply('userhost added')
458
ievent.reply('add failed')
460
cmnds.add('user-adduserhost', handle_adduserhost, 'OPER')
461
examples.add('user-adduserhost', 'user-adduserhost <name> <userhost>', \
462
'user-adduserhost dunker bart@%.a2000.nl')
463
aliases.data['adduserhost'] = 'user-adduserhost'
464
aliases.data['adduserhosts'] = 'user-adduserhost'
466
def handle_deluserhost(bot, ievent):
467
""" user-deluserhost <name> <userhost> .. remove from userhosts of name """
468
if len(ievent.args) != 2:
469
ievent.missing('<name> <userhost>')
471
name, userhost = ievent.args
472
userhost = stripident(userhost)
474
if name == 'owner' and not bot.ownercheck(ievent, 'can delete userhosts \
477
if not users.exist(name):
478
ievent.reply("can't find user %s" % name)
482
result = users.db.execute(""" DELETE FROM userhosts WHERE \
483
name = %s AND userhost = %s """, (name, userhost))
484
except Exception, ex:
485
ievent.reply("ERROR: %s" % str(ex))
488
ievent.reply('userhost removed')
490
ievent.reply("%s has no %s in userhost list" % (name, \
494
cmnds.add('user-deluserhost', handle_deluserhost, 'OPER')
495
examples.add('user-deluserhost', 'user-deluserhost <name> <userhost> .. \
496
delete from usershosts of <name> userhost <userhost>','user-deluserhost \
497
dunker bart1@bla.a2000.nl')
498
aliases.data['deluserhost'] = 'user-deluserhost'
499
aliases.data['deluserhosts'] = 'user-deluserhost'
501
def handle_getuserhosts(bot, ievent):
502
""" user-getuserhosts <name> .. get userhosts of name """
506
ievent.missing('<name>')
509
userhosts = users.db.execute(""" SELECT userhost FROM userhosts \
510
WHERE name = %s """, who)
514
userhostlist.append(i[0])
515
ievent.reply("userhosts of %s: " % who, userhostlist, dot=True)
517
ievent.reply("can't find user %s" % who)
519
cmnds.add('user-getuserhosts', handle_getuserhosts, 'OPER')
520
examples.add('user-getuserhosts', 'user-getuserhosts <name> .. get \
521
userhosts of <name>', 'getuserhosts dunker')
522
aliases.data['getuserhosts'] = 'user-getuserhosts'
524
def handle_userhosts(bot, ievent):
525
""" user-userhosts .. get userhosts of user giving the command """
526
name = users.getname(ievent.userhost)
527
userhosts = users.db.execute(""" SELECT userhost FROM userhosts \
528
WHERE name = %s """, name)
532
userhostlist.append(i[0])
533
ievent.reply("you have userhosts: ", userhostlist, dot=True)
535
cmnds.add('user-userhosts', handle_userhosts, 'USER')
536
examples.add('user-userhosts', 'get userhosts', 'user-userhosts')
537
aliases.data['userhosts'] = 'user-userhosts'
539
def handle_getemail(bot, ievent):
540
""" user-getemail <name> .. get email of name """
542
name = ievent.args[0]
544
ievent.missing('<name>')
547
if not users.exist(name):
548
ievent.reply("can't find user %s" % name)
550
email = users.db.execute(""" SELECT email FROM email \
551
WHERE name = %s """, name)
553
ievent.reply(email[0][0])
555
ievent.reply('no email set')
557
cmnds.add('user-getemail', handle_getemail, 'USER')
558
examples.add('user-getemail', 'user-getemail <name> .. get email from user \
559
<name>', 'user-getemail dunker')
560
aliases.data['getemail'] = 'user-getemail'
562
def handle_setemail(bot, ievent):
563
""" user-setemail <name> .. set email of name """
565
name, email = ievent.args
567
ievent.missing('<name> <email>')
569
if not users.exist(name):
570
ievent.reply("can't find user %s" % name)
572
users.setemail(name, email)
573
ievent.reply('email set')
575
cmnds.add('user-setemail', handle_setemail, 'OPER')
576
examples.add('user-setemail', 'user-setemail <name> <email>.. set email of \
577
user <name>', 'user-setemail dunker bart@gozerbot.org')
578
aliases.data['setemail'] = 'user-setemail'
580
def handle_email(bot, ievent):
581
""" user-email .. show email of user giving the command """
582
if len(ievent.args) != 0:
583
ievent.reply('use getemail to get the email address of an user .. \
584
email shows your own mail address')
586
name = users.getname(ievent.userhost)
587
email = users.db.execute(""" SELECT email FROM email \
588
WHERE name = %s """, name)
590
ievent.reply(email[0][0])
592
ievent.reply('no email set')
594
cmnds.add('user-email', handle_email, 'USER')
595
examples.add('user-email', 'get email', 'user-email')
596
aliases.data['email'] = 'user-email'
598
def handle_delemail(bot, ievent):
599
""" user-delemail .. reset email of user giving the command """
600
name = users.getname(ievent.userhost)
602
ievent.reply("can't find user for %s" % ievent.userhost)
606
result = users.db.execute(""" DELETE FROM email WHERE \
608
except Exception, ex:
609
ievent.reply("ERROR: %s" % str(ex))
612
ievent.reply('email removed')
614
ievent.reply('delete failed')
616
cmnds.add('user-delemail', handle_delemail, 'OPER')
617
examples.add('user-delemail', 'reset email', 'user-delemail')
618
aliases.data['delemail'] = 'user-delemail'
620
def handle_addpermit(bot, ievent):
621
""" user-addpermit <name> <permit> .. add permit to permit list \
624
who, what = ievent.args
626
ievent.missing("<name> <permit>")
628
if not users.exist(who):
629
ievent.reply("can't find username of %s" % who)
631
name = users.getname(ievent.userhost)
632
if users.gotpermit(name, (who, what)):
633
ievent.reply('%s is already allowed to do %s' % (who, what))
637
result = users.db.execute(""" INSERT INTO permits(name, \
638
permit) values(%s,%s) """, (name, "%s %s" % (who, what)))
639
except Exception, ex:
640
ievent.reply("ERROR: %s" % str(ex))
643
ievent.reply('permit added')
645
ievent.reply('add failed')
647
cmnds.add('user-addpermit', handle_addpermit, 'USER')
648
examples.add('user-addpermit', 'user-addpermit <nick> <what> .. permit \
649
nick access to <what> .. use setperms to add permissions', \
650
'user-addpermit dunker todo')
653
def handle_permit(bot, ievent):
654
""" user-permit .. get permit list of user giving the command """
656
ievent.reply("use the allow command to allow somebody something .. \
657
use getname <nick> to get the username of somebody .. this command shows \
658
what permits you have")
660
name = users.getname(ievent.userhost)
662
ievent.reply("can't find user for %s" % ievent.userhost)
664
permit = users.db.execute(""" SELECT permit FROM permits \
665
WHERE name = %s """, name)
669
permitlist.append(i[0])
670
ievent.reply("you permit the following: ", permitlist, dot=True)
672
ievent.reply("you don't have any permits")
674
cmnds.add('user-permit', handle_permit, 'USER')
675
examples.add('user-permit', 'show permit of user giving the command', \
677
aliases.data['permit'] = 'user-permit'
679
def handle_userdelpermit(bot, ievent):
680
""" user-delpermit <name> <permit> .. remove (name, permit) from permit
683
who, what = ievent.args
685
ievent.missing("<name> <what>")
687
if not users.exist(who):
688
ievent.reply("can't find registered name of %s" % who)
690
name = users.getname(ievent.userhost)
691
if not users.gotpermit(name, (who, what)):
692
ievent.reply('%s is already not allowed to do %s' % (who, what))
696
result = users.db.execute(""" DELETE FROM permits WHERE \
697
name = %s AND permit = %s """, (name, "%s %s" % (who, what)))
698
except Exception, ex:
699
ievent.reply("ERROR: %s" % str(ex))
702
ievent.reply('%s denied' % what)
704
ievent.reply('delete failed')
706
cmnds.add('user-delpermit', handle_userdelpermit, 'USER')
707
examples.add('user-delpermit', 'user-delpermit <name> <permit>', \
708
'user-delpermit dunker todo')
711
def handle_check(bot, ievent):
712
""" user-check <nick> .. get user data of <nick> """
714
nick = ievent.args[0]
716
ievent.missing('<nick>')
718
userhost = getwho(bot, nick)
720
ievent.reply("can't find userhost of %s" % nick)
722
name = users.getname(userhost)
724
ievent.reply("can't find user")
726
userhosts = users.db.execute(""" SELECT userhost FROM userhosts \
727
WHERE name = %s """, name)
728
perms = users.db.execute(""" SELECT perm FROM perms \
729
WHERE name = %s """, name)
730
email = users.db.execute(""" SELECT email FROM email \
731
WHERE name = %s """, name)
732
permits = users.db.execute(""" SELECT permit FROM permits \
733
WHERE name = %s """, name)
734
status = users.db.execute(""" SELECT status FROM statuses \
735
WHERE name = %s """, name)
736
jarig = users.db.execute(""" SELECT birthday FROM birthday \
737
WHERE name = %s """, name)
738
ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s \
739
permits: %s status: %s birthday: %s' % (name, str(userhosts), str(perms), \
740
str(email), str(permits), str(status),str(jarig)))
742
cmnds.add('user-check', handle_check, 'OPER')
743
examples.add('user-check', 'user-check <nick>', 'user-check dunker')
744
aliases.data['check'] = 'user-check'
746
def handle_show(bot, ievent):
747
""" user-show <name> .. get data of <name> """
749
name = ievent.args[0]
751
ievent.missing('<name>')
754
if not users.exist(name):
755
ievent.reply("can't find user %s" % name)
757
userhosts = users.db.execute(""" SELECT userhost FROM userhosts \
758
WHERE name = %s """, name)
759
perms = users.db.execute(""" SELECT perm FROM perms \
760
WHERE name = %s """, name)
761
email = users.db.execute(""" SELECT email FROM email \
762
WHERE name = %s """, name)
763
permits = users.db.execute(""" SELECT permit FROM permits \
764
WHERE name = %s """, name)
765
status = users.db.execute(""" SELECT status FROM statuses \
766
WHERE name = %s """, name)
767
jarig = users.db.execute(""" SELECT birthday FROM birthday \
768
WHERE name = %s """, name)
769
ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s \
770
permits: %s status: %s birthday: %s' % (name, str(userhosts), str(perms), \
771
str(email), str(permits), str(status),str(jarig)))
773
cmnds.add('user-show', handle_show, 'OPER')
774
examples.add('user-show', 'user-show <name> .. show data of <name>', \
777
def handle_match(bot, ievent):
778
""" user-match <userhost> .. get data of <userhost> """
780
userhost = ievent.args[0]
782
ievent.missing('<userhost>')
784
name = users.getname(userhost)
786
ievent.reply("can't find user with userhost %s" % userhost)
788
userhosts = users.db.execute(""" SELECT userhost FROM userhosts \
789
WHERE name = %s """, name)
790
perms = users.db.execute(""" SELECT perm FROM perms \
791
WHERE name = %s """, name)
792
email = users.db.execute(""" SELECT email FROM email \
793
WHERE name = %s """, name)
794
permits = users.db.execute(""" SELECT permit FROM permits \
795
WHERE name = %s """, name)
796
status = users.db.execute(""" SELECT status FROM statuses \
797
WHERE name = %s """, name)
798
jarig = users.db.execute(""" SELECT birthday FROM birthday \
799
WHERE name = %s """, name)
800
ievent.reply('userrecord of %s = userhosts: %s perms: %s email: %s \
801
permits: %s status: %s birthday: %s' % (name, str(userhosts), str(perms), \
802
str(email), str(permits), str(status),str(jarig)))
804
cmnds.add('user-match', handle_match, ['USER', 'OPER'])
805
examples.add('user-match', 'user-match <userhost>', 'user-match test@test')
806
aliases.data['match'] = 'user-match'
808
def handle_getuserstatus(bot, ievent):
809
""" user-allstatus <status> .. list users with status <status> """
811
status = ievent.args[0].upper()
813
ievent.missing('<status>')
816
userslist = users.db.execute(""" SELECT DISTINCT name FROM statuses \
817
WHERE status = %s """, status)
819
ievent.reply("no users with %s status found" % status)
824
ievent.reply("users with %s status: " % status, result, dot=True)
826
ievent.reply("no users with %s status found" % status)
828
cmnds.add('user-allstatus', handle_getuserstatus, 'OPER')
829
examples.add('user-allstatus', 'user-allstatus <status> .. get all users \
830
with <status> status', 'user-allstatus #dunkbots')
832
def handle_getuserperm(bot, ievent):
833
""" user-allperm <perm> .. list users with permission <perm> """
835
perm = ievent.args[0].upper()
837
ievent.missing('<perm>')
840
permusers = users.db.execute(""" SELECT DISTINCT name FROM perms \
841
WHERE perm = %s """, perm)
843
ievent.reply("no users with %s permission found" % perm)
848
ievent.reply('users with %s permission: ' % perm, result, dot=True)
850
ievent.reply("no users with %s permission found" % perm)
852
cmnds.add('user-allperm', handle_getuserperm, 'OPER')
853
examples.add('user-allperm', 'user-allperm <perm> .. get users with \
854
<perm> permission', 'user-allperm rss')
856
def handle_usersearch(bot, ievent):
857
""" search for user matching given userhost """
859
what = ievent.args[0]
861
ievent.missing('<what>')
863
result = users.db.execute(""" SELECT name, userhost FROM userhosts \
864
WHERE userhost LIKE %s """, '%%%s%%' % what)
868
res.append("(%s) %s" % (i[0], i[1]))
869
ievent.reply('users matching %s: ' % what, res, dot=True)
871
ievent.reply('no userhost matching %s found' % what)
873
cmnds.add('user-search', handle_usersearch, 'OPER')
874
examples.add('user-search', 'search users userhosts', 'user-search gozerbot')
876
def handle_addpermall(bot, ievent):
877
""" user-addpermall <perm> .. add permission to all users """
879
perm = ievent.args[0].upper()
881
ievent.missing('<perm>')
884
ievent.reply("can't add OPER permissions to all")
886
users.addpermall(perm)
887
ievent.reply('%s perm added' % perm)
889
cmnds.add('user-addpermall', handle_addpermall, 'OPER')
890
examples.add('user-addpermall', 'user-addpermall <perm> .. add <permission> \
891
to all users', 'addpermsall USER')
893
def handle_delpermall(bot, ievent):
894
""" user-delpermall <perm> .. delete permission from all users """
896
perm = ievent.args[0].upper()
898
ievent.missing('<perm>')
901
ievent.reply("can't delete OPER permissions from all")
903
users.delpermall(perm)
904
ievent.reply('%s perm deleted' % perm)
906
cmnds.add('user-delpermall', handle_delpermall, 'OPER')
907
examples.add('user-delpermall', 'user-delpermall <perm> .. delete \
908
<permission> from all users', 'delpermsall BLA')