### # Copyright (c) 2008, Aileen Zhang # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions, and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions, and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of the author of this software nor the name of # contributors to this software may be used to endorse or promote products # derived from this software without specific prior written consent. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. ### import calendar import time import supybot.conf as conf import supybot.utils as utils from supybot.commands import * import supybot.plugins as plugins import supybot.ircutils as ircutils import supybot.callbacks as callbacks class NextRaid(callbacks.Plugin): """Add the help for "@plugin help NextRaid" here This should describe *how* to use this plugin.""" pass def isdate(d): """Check if d is a date in ddmmyy format.""" try: time.strptime(d, '%d%m%y') except ValueError: return False return True def istime(t): """Check if t is a valid time.""" try: time.strptime(t, '%H%M') except ValueError: return False return True def setnextraid(self, irc, msg, args, channel, date, time): """[] Sets the date and time of the next raid in GMT.""" conf.supybot.plugins.NextRaid.raiddate.setValue(date) conf.supybot.plugins.NextRaid.raidtime.setValue(time) setnextraid = wrap(setnextraid, ['channeldb', ('something', 'Date must be in ddmmyy format.', isdate), ('something', 'Time must be in hhmm format.', istime), 'admin']) # return time.strptime(self.registryValue('raidtime', channel) +\ # self.registryValue('raidtime', channel), '%d%m%y%H%M') def nextraid(self, irc, msg, args, channel): """[] Returns the date and time of the next raid.""" nrt = time.strptime(self.registryValue('raiddate', channel) + self.registryValue('raidtime', channel), '%d%m%y%H%M') irc.reply(time.strftime('The next raid is on %A %d %B at %H%M GMT.',\ nrt)) t = int(calendar.timegm(nrt) - time.time()) irc.reply('in ' + str(t/(60*60*24)) + ' days, ' + str((t%(60*60*24))/(60*60)) +\ ' hours and ' + str((t%(60*60))/(60)) + ' minutes') nextraid = wrap(nextraid, ['channel',]) Class = NextRaid # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: