1
# gozerbot/plugs/userstate.py
5
""" userstate is stored in gozerdata/userstates. """
7
__gendoclast__ = ['userstate-del', ]
10
from gozerbot.commands import cmnds
11
from gozerbot.examples import examples
12
from gozerbot.persist.persiststate import UserState
13
from gozerbot.users import users
14
from gozerbot.aliases import aliasset
15
from gozerbot.plughelp import plughelp
17
plughelp.add('userstate', 'maintain state per user')
19
def handle_userstate(bot, ievent):
21
""" let the user manage its own state. """
24
(item, value) = ievent.args
28
username = users.getname(ievent.userhost)
29
userstate = UserState(username)
31
userstate[item] = value
35
for i, j in userstate.data.iteritems():
36
result.append("%s=%s" % (i, j))
39
ievent.reply("userstate of %s: " % username, result, dot=True)
41
ievent.reply('no userstate of %s known' % username)
43
cmnds.add('userstate', handle_userstate, 'USER')
44
examples.add('userstate', 'get or set userstate', '1) userstate 2) userstate TZ -1')
45
aliasset('set', 'userstate')
47
def handle_userstateget(bot, ievent):
49
""" get state of a user. """
52
ievent.missing('<username>')
55
userstate = UserState(ievent.rest)
57
for i, j in userstate.data.iteritems():
58
result.append("%s=%s" % (i, j))
61
ievent.reply("userstate of %s: " % ievent.rest, result, dot=True)
63
ievent.reply('no userstate of %s known' % ievent.rest)
65
cmnds.add('userstate-get', handle_userstateget, 'OPER')
66
examples.add('userstate-get', 'get the userstate of another user', 'userstate-get dunker')
68
def handle_userstateset(bot, ievent):
70
""" set the userstate of a user. """
73
(username, item, value) = ievent.args
75
ievent.missing('<username> <item> <value>')
78
userstate = UserState(username)
79
userstate[item] = value
81
ievent.reply('userstate %s set to %s' % (item, value))
83
cmnds.add('userstate-set', handle_userstateset, 'OPER')
84
examples.add('userstate-set', 'set userstate variable of another user', 'userstate-set dunker TZ -1')
86
def handle_userstatedel(bot, ievent):
88
""" remove value from user state. """
92
(username, item) = ievent.args
97
ievent.missing('[username] <item>')
101
username = users.getname(ievent.userhost)
103
userstate = UserState(username)
105
del userstate.data[item]
107
ievent.reply('no such item')
111
ievent.reply('item %s deleted' % item)
113
cmnds.add('userstate-del', handle_userstatedel, 'OPER')
114
examples.add('userstate-del', 'delete userstate variable', '1) userstate-del TZ 2) userstate-del dunker TZ')
116
def handle_unset(bot, ievent):
118
""" remove value from user state of the user giving the command. """
121
item = ievent.args[0]
123
ievent.missing('<item>')
126
username = users.getname(ievent.userhost)
128
userstate = UserState(username)
130
del userstate.data[item]
132
ievent.reply('no such item')
136
ievent.reply('item %s deleted' % item)
138
cmnds.add('unset', handle_unset, 'USER')
139
examples.add('unset', 'delete userstate variable for user gving the command', '1) unset TZ')