1
# gozerplugs/plugs/userstate.py
5
""" userstate is stored in gozerdata/userstates """
7
__gendoclast__ = ['userstate-del', ]
9
from gozerbot.commands import cmnds
10
from gozerbot.examples import examples
11
from gozerbot.persiststate import UserState
12
from gozerbot.users import users
13
from gozerbot.plughelp import plughelp
15
plughelp.add('userstate', 'maintain state per user')
17
def handle_userstate(bot, ievent):
19
(item, value) = ievent.args
22
username = users.getname(ievent.userhost)
23
userstate = UserState(username)
25
userstate[item] = value
28
for i, j in userstate.data.iteritems():
29
result.append("%s=%s" % (i, j))
31
ievent.reply("userstate of %s: " % username, result, dot=True)
33
ievent.reply('no userstate of %s known' % username)
35
cmnds.add('userstate', handle_userstate, 'USER')
36
examples.add('userstate', 'get or set userstate', '1) userstate 2) \
39
def handle_userstateget(bot, ievent):
41
ievent.missing('<username>')
43
userstate = UserState(ievent.rest)
45
for i, j in userstate.data.iteritems():
46
result.append("%s=%s" % (i, j))
48
ievent.reply("userstate of %s: " % ievent.rest, result, dot=True)
50
ievent.reply('no userstate of %s known' % ievent.rest)
52
cmnds.add('userstate-get', handle_userstateget, 'OPER')
53
examples.add('userstate-get', 'get the userstate of another user', \
54
'userstate-get dunker')
56
def handle_userstateset(bot, ievent):
58
(username, item, value) = ievent.args
60
ievent.missing('<username> <item> <value>')
62
userstate = UserState(username)
63
userstate[item] = value
65
ievent.reply('userstate %s set to %s' % (item, value))
67
cmnds.add('userstate-set', handle_userstateset, 'OPER')
68
examples.add('userstate-set', 'set userstate variable of another user', \
69
'userstate-set dunker TZ -1')
71
def handle_userstatedel(bot, ievent):
74
(username, item) = ievent.args
79
ievent.missing('[username] <item>')
82
username = users.getname(ievent.userhost)
83
userstate = UserState(username)
85
del userstate.data[item]
87
ievent.reply('no such item')
90
ievent.reply('item %s deleted' % item)
92
cmnds.add('userstate-del', handle_userstatedel, 'OPER')
93
examples.add('userstate-del', 'delete userstate variable', \
94
'1) userstate-del TZ 2) userstate-del dunker TZ')