~ubuntu-branches/ubuntu/utopic/gozerbot/utopic

« back to all changes in this revision

Viewing changes to gozerplugs/plugs/userstate.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2009-09-14 09:00:29 UTC
  • mfrom: (1.1.4 upstream) (3.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090914090029-uval0ekt72kmklxw
Tags: 0.9.1.3-3
Changed dependency on python-setuptools to python-pkg-resources
(Closes: #546435) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# gozerplugs/plugs/userstate.py
2
 
#
3
 
#
4
 
 
5
 
""" userstate is stored in gozerdata/userstates """
6
 
 
7
 
__gendoclast__ = ['userstate-del', ]
8
 
 
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
14
 
 
15
 
plughelp.add('userstate', 'maintain state per user')
16
 
 
17
 
def handle_userstate(bot, ievent):
18
 
    try:
19
 
        (item, value) = ievent.args
20
 
    except ValueError:
21
 
        item = value = None
22
 
    username = users.getname(ievent.userhost)
23
 
    userstate = UserState(username)
24
 
    if item and value:
25
 
        userstate[item] = value
26
 
        userstate.save()
27
 
    result = []
28
 
    for i, j in userstate.data.iteritems():
29
 
        result.append("%s=%s" % (i, j))
30
 
    if result:
31
 
        ievent.reply("userstate of %s: " % username, result, dot=True)
32
 
    else:
33
 
        ievent.reply('no userstate of %s known' % username)
34
 
 
35
 
cmnds.add('userstate', handle_userstate, 'USER')
36
 
examples.add('userstate', 'get or set userstate', '1) userstate 2) \
37
 
userstate TZ -1')
38
 
 
39
 
def handle_userstateget(bot, ievent):
40
 
    if not ievent.rest:
41
 
        ievent.missing('<username>')
42
 
        return
43
 
    userstate = UserState(ievent.rest)
44
 
    result = []
45
 
    for i, j in userstate.data.iteritems():
46
 
        result.append("%s=%s" % (i, j))
47
 
    if result:
48
 
        ievent.reply("userstate of %s: " % ievent.rest, result, dot=True)
49
 
    else:
50
 
        ievent.reply('no userstate of %s known' % ievent.rest)
51
 
 
52
 
cmnds.add('userstate-get', handle_userstateget, 'OPER')
53
 
examples.add('userstate-get', 'get the userstate of another user', \
54
 
'userstate-get dunker')
55
 
 
56
 
def handle_userstateset(bot, ievent):
57
 
    try:
58
 
        (username, item, value) = ievent.args
59
 
    except ValueError:
60
 
        ievent.missing('<username> <item> <value>')
61
 
        return
62
 
    userstate = UserState(username)
63
 
    userstate[item] = value
64
 
    userstate.save()
65
 
    ievent.reply('userstate %s set to %s' % (item, value))
66
 
 
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')
70
 
 
71
 
def handle_userstatedel(bot, ievent):
72
 
    username = None
73
 
    try:
74
 
        (username, item)  = ievent.args
75
 
    except ValueError:
76
 
        try:
77
 
           item = ievent.args[0]
78
 
        except IndexError:
79
 
            ievent.missing('[username] <item>')
80
 
            return
81
 
    if not username:
82
 
        username = users.getname(ievent.userhost)
83
 
    userstate = UserState(username)
84
 
    try:
85
 
        del userstate.data[item]
86
 
    except KeyError:
87
 
        ievent.reply('no such item')
88
 
        return
89
 
    userstate.save()
90
 
    ievent.reply('item %s deleted' % item)
91
 
 
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')