~ubuntu-branches/ubuntu/precise/gozerbot/precise

« back to all changes in this revision

Viewing changes to debian/gozerbot/usr/lib/python2.5/site-packages/gozerplugs/plugs/userstate.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2008-06-02 19:26:39 UTC
  • mfrom: (1.1.3 upstream) (3.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080602192639-3rn65nx4q1sgd6sy
Tags: 0.8.1-1
New upstream release.

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')