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

« back to all changes in this revision

Viewing changes to build/lib/gozerbot/plugs/userstate.py

  • Committer: Package Import Robot
  • Author(s): Jeremy Malcolm
  • Date: 2012-04-03 21:58:28 UTC
  • mfrom: (3.1.11 sid)
  • Revision ID: package-import@ubuntu.com-20120403215828-6mik0tzug5na93la
Tags: 0.99.1-2
* Removes logfiles on purge (Closes: #668767)
* Reverted location of installed files back to /usr/lib/gozerbot.

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
 
 
116
def handle_unset(bot, ievent):
 
117
 
 
118
    """ remove value from user state of the user giving the command. """
 
119
 
 
120
    try:
 
121
        item = ievent.args[0]
 
122
    except IndexError:
 
123
        ievent.missing('<item>')
 
124
        return
 
125
 
 
126
    username = users.getname(ievent.userhost)
 
127
 
 
128
    userstate = UserState(username)
 
129
    try:
 
130
        del userstate.data[item]
 
131
    except KeyError:
 
132
        ievent.reply('no such item')
 
133
        return
 
134
 
 
135
    userstate.save()
 
136
    ievent.reply('item %s deleted' % item)
 
137
 
 
138
cmnds.add('unset', handle_unset, 'USER')
 
139
examples.add('unset', 'delete userstate variable for user gving the command', '1) unset TZ')