mirror of
https://github.com/mightyBroccoli/xmpp-chatbot.git
synced 2024-09-20 04:20:14 +02:00
46 lines
1.3 KiB
Python
46 lines
1.3 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, session, msg, target):
|
||
|
self.session = session
|
||
|
self.nick = msg['mucnick']
|
||
|
self.message_type = msg['type']
|
||
|
self.target = target
|
||
|
|
||
|
async def query(self):
|
||
|
last_activity = await self.session['xep_0012'].get_last_activity(jid=self.target)
|
||
|
seconds = await last_activity['last_activity']['seconds']
|
||
|
|
||
|
return seconds
|
||
|
|
||
|
async def format_values(self, granularity=4):
|
||
|
seconds = await self.query()
|
||
|
#seconds = last_activity['last_activity']['seconds']
|
||
|
uptime = []
|
||
|
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 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])
|
||
|
|
||
|
if self.message_type == "groupchat":
|
||
|
text = "%s: %s is running since %s" % (self.nick, self.target, result)
|
||
|
else:
|
||
|
text = "%s is running since %s" % (self.target, result)
|
||
|
|
||
|
return text
|