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

« back to all changes in this revision

Viewing changes to gozerplugs/plugs/misc.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:
11
11
from gozerbot.examples import examples
12
12
from gozerbot.aliases import aliases
13
13
from gozerbot.plughelp import plughelp
14
 
import time, os, threading
 
14
from gozerbot.persiststate import UserState
 
15
from gozerbot.users import users
 
16
import time, os, threading, thread
15
17
 
16
18
plughelp.add('misc', 'miscellaneous commands')
17
19
 
24
26
 
25
27
def handle_source(bot, ievent):
26
28
    """ source .. show where to fetch the bot source """ 
27
 
    ievent.reply('see http://gozerbot.org .. for mercurial use: "hg clone \
28
 
http://gozerbot.org/hg/gozerbot" .. for subversion use: "svn checkout \
29
 
http://gozerbot.googlecode.com/svn/trunk/ gozerbot" .. a debian package is \
30
 
available in testing and unstable')
 
29
    ievent.reply('see http://gozerbot.org')
31
30
 
32
31
cmnds.add('source', handle_source, ['USER', 'WEB', 'ANON'])
33
32
examples.add('source', 'show source url', 'source')
82
81
 
83
82
def handle_time(bot, ievent):
84
83
    """ time .. show current time """
85
 
    ievent.reply(time.ctime(time.time()))
 
84
    authuser = users.getname(ievent.userhost)
 
85
    if authuser:
 
86
        if ievent.rest:
 
87
            if users.exist(ievent.rest):
 
88
                username = ievent.rest
 
89
            else:
 
90
                ievent.reply("We don't have a user %s" % ievent.rest)
 
91
                return
 
92
        else:
 
93
            username = authuser
 
94
        userstate = UserState(username)
 
95
        try:
 
96
            tz = userstate['TZ']
 
97
        except KeyError:
 
98
            if username == authuser:
 
99
                tz = handle_ask_timezone(bot, ievent)
 
100
                if tz and set_timezone(bot, ievent, userstate, tz):
 
101
                    tz = userstate['TZ']
 
102
                else:
 
103
                    return
 
104
            else:
 
105
                ievent.reply("%s doesn't have a timezone set" % username)
 
106
                return
 
107
        ievent.reply(get_time(tz, username, authuser))
 
108
    else:
 
109
        ievent.reply(get_time('UTC', '', ''))
86
110
 
87
111
cmnds.add('time', handle_time, ['USER', 'ANON'])
88
 
examples.add('time', 'show current time', 'time')
 
112
examples.add('time', 'show current time (of a user)', 'time [user]')
89
113
aliases.data['t'] = 'time'
90
114
aliases.data['date'] = 'time'
 
115
 
 
116
def handle_timezone(bot, ievent):
 
117
    """ timezone .. set current timezone """
 
118
    username = users.getname(ievent.userhost)
 
119
    if username:
 
120
        userstate = UserState(username)
 
121
        if ievent.rest:
 
122
            try:
 
123
                timezone = int(ievent.rest)
 
124
            except ValueError:
 
125
                ievent.reply('TZ needs to be an integer')
 
126
                return
 
127
        else:
 
128
            timezone = handle_ask_timezone(bot, ievent)
 
129
        if timezone:
 
130
            set_timezone(bot, ievent, userstate, timezone)
 
131
 
 
132
cmnds.add('timezone', handle_timezone, ['USER'])
 
133
examples.add('timezone', 'set current timezone', 'timezone [tz]')
 
134
 
 
135
def handle_ask_timezone(bot, ievent):
 
136
    ievent.reply('what is your timezone ? for example -1 or +4')
 
137
    response = waitforuser(bot, ievent.userhost)
 
138
    if response:
 
139
        return response.txt
 
140
    else:
 
141
        ievent.reply("can't determine timezone .. not setting it")
 
142
        return
 
143
 
 
144
def set_timezone(bot, ievent, userstate, timezone):
 
145
    # check for timezone validity and return False, if necessary
 
146
    try:
 
147
        tz = int(timezone)
 
148
    except ValueError:
 
149
        ievent.reply('timezone needs to be an integer')
 
150
        return False
 
151
    userstate['TZ'] = timezone
 
152
    userstate.save()
 
153
    ievent.reply("timezone set to %s" % timezone)
 
154
    return True
 
155
 
 
156
def get_time(zone, username, authuser):
 
157
    try:
 
158
        zone = int(zone)
 
159
    except ValueError:
 
160
        zone = 0
 
161
    return time.ctime(time.time() + int(time.timezone) + zone*3600)