def test_seconds_to_human(): payload = 0 assert time.seconds_to_human(payload) == '0 seconds ago' payload = 10000 assert time.seconds_to_human(payload) == '2 hours, 46 minutes ago' payload = -2938124 assert time.seconds_to_human(payload) == 'in 1 month, 3 days'
def test_time_timedelta_formatter(): payload = 10000 assert time.seconds_to_human(payload) == '2 hours, 46 minutes ago' payload = -2938124 assert time.seconds_to_human(payload) == 'in 1 month, 3 days' payload = datetime.timedelta(hours=4) assert time.seconds_to_human(payload) == '4 hours ago' payload = datetime.timedelta(hours=-4) assert time.seconds_to_human(payload) == 'in 4 hours' payload = datetime.timedelta(days=4) assert time.seconds_to_human(payload) == '4 days ago' payload = datetime.timedelta(days=4, hours=26) assert time.seconds_to_human(payload) == '5 days, 2 hours ago' payload = datetime.timedelta(days=4, hours=2, seconds=123) assert time.seconds_to_human(payload) == '4 days, 2 hours ago' payload = datetime.timedelta(days=4, seconds=123) assert time.seconds_to_human(payload) == '4 days, 2 minutes ago' payload = datetime.timedelta(days=365, seconds=5) assert time.seconds_to_human(payload) == '1 year, 5 seconds ago'
def test_time_timedelta_formatter(): payload = 10000 assert seconds_to_human(payload) == '2 hours, 46 minutes ago' payload = -2938124 assert seconds_to_human(payload) == 'in 1 month, 3 days' payload = timedelta(hours=4) assert seconds_to_human(payload) == '4 hours ago' payload = timedelta(hours=-4) assert seconds_to_human(payload) == 'in 4 hours'
def seen(bot, trigger): """Reports when and where the user was last seen.""" if not trigger.group(2): bot.reply("Use `%sseen <nick>` to know when <nick> was last seen." % bot.settings.core.help_prefix) return nick = trigger.group(2).strip() if nick == bot.nick: bot.reply("I'm right here!") return timestamp = bot.db.get_nick_value(nick, 'seen_timestamp') if not timestamp: bot.reply("Sorry, I haven't seen {nick} around.".format(nick=nick)) return channel = bot.db.get_nick_value(nick, 'seen_channel') message = bot.db.get_nick_value(nick, 'seen_message') action = bot.db.get_nick_value(nick, 'seen_action') saw = datetime.datetime.utcfromtimestamp(timestamp) delta = seconds_to_human((trigger.time - saw).total_seconds()) msg = "I last saw " + nick if bot.make_identifier(channel) == trigger.sender: if action: msg += " in here {since}, doing: {nick} {action}".format( since=delta, nick=nick, action=message) else: msg += " in here {since}, saying: {message}".format( since=delta, message=message) else: msg += " in another channel {since}.".format(since=delta) bot.say(msg)
def test_seconds_to_human_granularity(): assert time.seconds_to_human(3672) == '1 hour, 1 minute ago' assert time.seconds_to_human(3672, 3) == '1 hour, 1 minute, 12 seconds ago' assert time.seconds_to_human(3672, 1) == '1 hour ago' assert time.seconds_to_human(-3672) == 'in 1 hour, 1 minute' assert time.seconds_to_human(-3672, 3) == 'in 1 hour, 1 minute, 12 seconds' assert time.seconds_to_human(-3672, 1) == 'in 1 hour'
def test_seconds_to_human_timedelta(): payload = datetime.timedelta(hours=4) assert time.seconds_to_human(payload) == '4 hours ago' payload = datetime.timedelta(hours=-4) assert time.seconds_to_human(payload) == 'in 4 hours' payload = datetime.timedelta(days=4) assert time.seconds_to_human(payload) == '4 days ago' payload = datetime.timedelta(days=4, hours=26) assert time.seconds_to_human(payload) == '5 days, 2 hours ago' payload = datetime.timedelta(days=4, hours=2, seconds=123) assert time.seconds_to_human(payload) == '4 days, 2 hours ago' payload = datetime.timedelta(days=4, seconds=123) assert time.seconds_to_human(payload) == '4 days, 2 minutes ago' payload = datetime.timedelta(days=365, seconds=5) assert time.seconds_to_human(payload) == '1 year, 5 seconds ago'
def fetch_user(query): if not query: return "No search query provided." try: user = requests.get(api + uFilter % query, timeout=(10.0, 4.0)) except requests.exceptions.ConnectTimeout: return "Connection timed out." except requests.exceptions.ConnectionError: return "Could not connect to server." except requests.exceptions.ReadTimeout: return "Server took too long to send results." try: user.raise_for_status() except requests.exceptions.HTTPError as e: return "HTTP error: " + e.message try: uData = user.json() except ValueError: return user.content try: uEntry = uData['data'][0] except IndexError: return "No results found." uid = uEntry['id'] slug = uEntry['attributes']['slug'] userName = uEntry['attributes']['name'] waifuOrHusbando = uEntry['attributes'].get('waifuOrHusbando') if waifuOrHusbando: waifu = uData['included'][0]['attributes'].get('canonicalName') else: waifu = 'Not set!' statsLink = api + 'users/' + uid + sFilter stats = requests.get(statsLink) try: sData = stats.json() except ValueError: return stats.content try: sEntry = sData['data'][0] seconds = sEntry['attributes']['statsData'].get('time') lwoa = time.seconds_to_human(seconds)[: -4] # Remove " ago" from the end libraryLink = api + 'users/' + uid + lFilter library = requests.get(libraryLink) lData = library.json() l0Name = lData['included'][0]['attributes'].get('canonicalTitle', None) if l0Name: l0Prog = lData['data'][0]['attributes'].get('progress') slug += '. Last Updated: {l0Name} to {l0Prog}'.format( l0Name=l0Name, l0Prog=l0Prog) l1Name = lData['included'][1]['attributes'].get('canonicalTitle', None) if l1Name: l1Prog = lData['data'][1]['attributes'].get('progress') slug += ', {l1Name} to {l1Prog}'.format(l1Name=l1Name, l1Prog=l1Prog) l2Name = lData['included'][2]['attributes'].get('canonicalTitle', None) if l2Name: l2Prog = lData['data'][2]['attributes'].get('progress') slug += ', {l2Name} to {l2Prog}'.format(l2Name=l2Name, l2Prog=l2Prog) except IndexError: return "No stats found for this user." return ( "{userName}'s {waifuOrHusbando} is {waifu}, and they have wasted {lwoa} of their life on Japanese " "cartoons. Tell {userName} how much of a weeb they are at https://kitsu.io/users/{slug}" .format(userName=userName, waifuOrHusbando=waifuOrHusbando.lower(), waifu=waifu, lwoa=lwoa, slug=slug))