🏡 index : ~doyle/dave.git

import pickle

import dave.module
import dave.config
from humanize import naturaltime
from datetime import datetime

@dave.module.help("Syntax: seen [username]. Checks when we last saw a user.")
@dave.module.command(["seen", "lastseen"], r"([A-Za-z_\-\[\]\\^{}|`][A-Za-z0-9_\-\[\]\\^{}|`]*)$")
def seen(bot, args, sender, source):
    if not dave.config.redis.exists("lastseen:{}".format(args[0].lower())):
        bot.reply(source, sender, "I've never seen that user before.")
        return

    seen = pickle.loads(dave.config.redis.get("lastseen:{}".format(args[0].lower())))

    bot.reply(source, sender, "{} was last seen {} saying: {}".format(
        seen["name"],
        naturaltime(datetime.utcnow() - seen["when"]),
        seen["msg"]
    ))

@dave.module.match(r'(.*)')
@dave.module.always_run()
def log_last_seen(bot, args, sender, source):
    """Whenever someone sends a new message, log what they sent and the time it was sent"""
    dave.config.redis.set("lastseen:{}".format(sender.lower()), pickle.dumps({
        "name": sender,
        "when": datetime.utcnow(),
        "msg": args[0]
    }))