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

« back to all changes in this revision

Viewing changes to gozerbot/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
# gozerbot/plugs/userstate.py
 
2
#
 
3
#
 
4
 
 
5
""" userstate is stored in gozerdata/userstates. """
 
6
 
 
7
__gendoclast__ = ['userstate-del', ]
 
8
 
 
9
# gozerbot imports
 
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
 
16
 
 
17
plughelp.add('userstate', 'maintain state per user')
 
18
 
 
19
def handle_userstate(bot, ievent):
 
20
 
 
21
    """ let the user manage its own state. """
 
22
 
 
23
    try:
 
24
        (item, value) = ievent.args
 
25
    except ValueError:
 
26
        item = value = None
 
27
 
 
28
    username = users.getname(ievent.userhost)
 
29
    userstate = UserState(username)
 
30
    if item and value:
 
31
        userstate[item] = value
 
32
        userstate.save()
 
33
 
 
34
    result = []
 
35
    for i, j in userstate.data.iteritems():
 
36
        result.append("%s=%s" % (i, j))
 
37
 
 
38
    if result:
 
39
        ievent.reply("userstate of %s: " % username, result, dot=True)
 
40
    else:
 
41
        ievent.reply('no userstate of %s known' % username)
 
42
 
 
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')
 
46
 
 
47
def handle_userstateget(bot, ievent):
 
48
 
 
49
    """ get state of a user. """
 
50
 
 
51
    if not ievent.rest:
 
52
        ievent.missing('<username>')
 
53
        return
 
54
 
 
55
    userstate = UserState(ievent.rest)
 
56
    result = []
 
57
    for i, j in userstate.data.iteritems():
 
58
        result.append("%s=%s" % (i, j))
 
59
 
 
60
    if result:
 
61
        ievent.reply("userstate of %s: " % ievent.rest, result, dot=True)
 
62
    else:
 
63
        ievent.reply('no userstate of %s known' % ievent.rest)
 
64
 
 
65
cmnds.add('userstate-get', handle_userstateget, 'OPER')
 
66
examples.add('userstate-get', 'get the userstate of another user', 'userstate-get dunker')
 
67
 
 
68
def handle_userstateset(bot, ievent):
 
69
 
 
70
    """ set the userstate of a user. """
 
71
 
 
72
    try:
 
73
        (username, item, value) = ievent.args
 
74
    except ValueError:
 
75
        ievent.missing('<username> <item> <value>')
 
76
        return
 
77
 
 
78
    userstate = UserState(username)
 
79
    userstate[item] = value
 
80
    userstate.save()
 
81
    ievent.reply('userstate %s set to %s' % (item, value))
 
82
 
 
83
cmnds.add('userstate-set', handle_userstateset, 'OPER')
 
84
examples.add('userstate-set', 'set userstate variable of another user', 'userstate-set dunker TZ -1')
 
85
 
 
86
def handle_userstatedel(bot, ievent):
 
87
 
 
88
    """ remove value from user state. """
 
89
 
 
90
    username = None
 
91
    try:
 
92
        (username, item)  = ievent.args
 
93
    except ValueError:
 
94
        try:
 
95
           item = ievent.args[0]
 
96
        except IndexError:
 
97
            ievent.missing('[username] <item>')
 
98
            return
 
99
 
 
100
    if not username:
 
101
        username = users.getname(ievent.userhost)
 
102
 
 
103
    userstate = UserState(username)
 
104
    try:
 
105
        del userstate.data[item]
 
106
    except KeyError:
 
107
        ievent.reply('no such item')
 
108
        return
 
109
 
 
110
    userstate.save()
 
111
    ievent.reply('item %s deleted' % item)
 
112
 
 
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')
 
115
aliasset('unset', 'userstate-del')