Source code for irc3.plugins.uptime
# -*- coding: utf-8 -*-
from irc3.plugins.command import command
import time
import irc3
__doc__ = '''
==============================================
:mod:`irc3.plugins.uptime` Uptime plugin
==============================================
Add an ``uptime`` command.
.. autoclass:: Uptime
:members:
'''
[docs]@irc3.plugin
class Uptime:
requires = [
__name__.replace('uptime', 'command'),
]
def __init__(self, bot):
self.bot = bot
bot.uptime = self
self.uptime = time.time()
self.connection_uptime = None
config = bot.config.get(__name__, {})
self.fmt = config.get(
'fmt', '{days} days {hours} hours {minutes} minutes')
self.privmsg = config.get('privmsg',
'Up since {0}. Connected since {1}')
def connection_made(self):
self.connection_uptime = time.time()
def delta(self, value):
values = []
for base in [3600 * 24, 3600, 60, 1]:
d, value = divmod(value, base)
values.append(int(d))
values = dict(zip(['days', 'hours', 'minutes', 'seconds'], values))
return self.fmt.format(**values)
[docs] @command(permission='view')
def uptime(self, mask, target, args):
"""Show uptimes
%%uptime
"""
now = time.time()
uptime = self.delta(now - self.uptime)
connection_uptime = self.delta(now - (self.connection_uptime or now))
return self.privmsg.format(uptime, connection_uptime)