xmpp-chatbot/classes/uptime.py
nico 0c313565f2
simplification and major rework
* updated gitignore file
* partly reworked servercontact implementation
* complete rework of uptime, version
* part rework of xep requests
+ added more comments to xep requests
+ added opt_arg to version, xep and contact
* complete rework of validate function
* updated HandleError function
* part rework of StaticStrings function
+ implemented data dictionary to hold all data in main bot
+ added message_ids
* complete rework of queue building and deduplication
2018-11-06 23:43:11 +01:00

50 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
# XEP-0012: Last Activity
class LastActivity:
"""
query the server uptime of the specified domain, defined by XEP-0012
"""
def __init__(self):
# init all necessary variables
self.last_activity = None
self.target, self.opt_arg = None, None
def process(self, granularity=4):
seconds = self.last_activity['last_activity']['seconds']
uptime = []
# touple with displayable time sections
intervals = (
('years', 31536000), # 60 * 60 * 24 * 365
('weeks', 604800), # 60 * 60 * 24 * 7
('days', 86400), # 60 * 60 * 24
('hours', 3600), # 60 * 60
('minutes', 60),
('seconds', 1)
)
# for every element in possible time section process the seconds
for name, count in intervals:
value = seconds // count
if value:
seconds -= value * count
if value == 1:
name = name.rstrip('s')
uptime.append("{} {}".format(value, name))
result = ' '.join(uptime[:granularity])
# insert values into result string
text = "%s is running since %s" % (self.target, result)
return text
def format(self, query, target, opt_arg):
self.last_activity = query
self.target = target
self.opt_arg = opt_arg
reply = self.process()
return reply