# Path: core/moduletemplate.py
# class BotModule:
#     PRIV_NONE = "none"
#     PRIV_MOD = "mod"
#     PRIV_MODERATOR = "mod"
#     PRIV_ADMIN = "admin"
#     PRIV_ADMINISTRATOR = "admin"
#     def __init__(self, conn, logger, module_name):
#     def on_module_load(self):
#     def on_module_unload(self):
#     def on_connect(self):
#     def on_disconnect(self):
#     def on_privmsg(self, target, nick, message):
#     def on_action(self, target, nick, action):
#     def on_join(self, nick, channel):
#     def on_part(self, nick, channel, message):
#     def on_self_join(self, channel):
#     def on_self_part(self, channel):
#     def on_kick(self, nick, channel, knick, reason):
#     def on_quit(self, nick, message):
#     def on_command(self, target, nick, command, commandtext, mod, admin):
#     def on_numeric(self, numeric, data):
#     def message(self, target, nick, message, parse=False):
#     def notice(self, nick, message, parse=False):
#     def action(self, target, action, parse=False):
#     def mode(self, target, modes):
#     def ban(self, nick, channel, quiet=False):
#     def getMask(self, nick):
#     def send_raw(self, raw_message):
#     def debug(self, message, format=False):
#     def log(self, message):
#     def log_verbose(self, message):
#     def warning(self, message):
#     def notice_verbose(self, message):
#     def warning_verbose(self, message):
#     def error(self, message):
#     def isOp(self, nick, channel):
#     def isVoice(self, nick, channel):
#     def isOn(self, nick, channel):
#     def isIdentified(self, nick):
#     def isOper(self, nick):
#     def getUserData(self, nick):
#     def getChannelData(self, channel):
#     def isBotAdministrator(self, nick):
#     def isBotModerator(self, nick):
#     def ratelimit(self, command, confName="rate_limit_delay", delay=10):
#     def register_command(self, command, params, help, priv, aliases=None):
#     def unregister_command(self, command):
#     def getConfigMetadata(self, metadata):
#     def requireApiKey(self, api_name):
#     def _getApiKey(self, api_name):
#     def _unregister_commands(self):
#     def _getModuleData(self):
# 
# Path: tools/duration.py
# def timesincetimestamp(timestamp, now=None):
# def timebeforetimestamp(timestamp, now=None):
# def timesince(d, now=None):
# def timeuntil(d, now=None):
# 
# Path: tools/validator.py
# class Validator:
#     def __init__(self):
#     def hostmask(self, hostmask, require_nickname=False):
#     def nickname(self, nick):
#     def channel(self, channel):


from core import moduletemplate
from tools import duration
from tools import validator
import os
import random
import sqlite3
import time
        try:
            conn = sqlite3.connect(self.db_file)
            c = conn.cursor()
            result = c.execute("SELECT nick FROM seen WHERE lower(nick) = ?", [nickname])

            if result.fetchone():
                seen = True

            conn.close()
        except sqlite3.Error as e:
            self.error("was_seen({}) error: {}".format(nickname, str(e)))

        return seen

    def get_seen(self, nickname):
        if not self.validator.nickname(nickname):
            self.warning("seen: Tried to get seen data from invalid nickname {}".format(nickname))
            return False

        nickname = nickname.lower()
        response = ""

        try:
            conn = sqlite3.connect(self.db_file)
            c = conn.cursor()
            result = c.execute("SELECT * FROM seen WHERE lower(nick) = ?", [nickname]).fetchone()

            if len(result) > 4:
                response = ("{} ({}) was last seen on {} ({} ago) {}"
                            .format(result[0], result[1], result[2],

# Path: core/moduletemplate.py
# class BotModule:
#     PRIV_NONE = "none"
#     PRIV_MOD = "mod"
#     PRIV_MODERATOR = "mod"
#     PRIV_ADMIN = "admin"
#     PRIV_ADMINISTRATOR = "admin"
#     def __init__(self, conn, logger, module_name):
#     def on_module_load(self):
#     def on_module_unload(self):
#     def on_connect(self):
#     def on_disconnect(self):
#     def on_privmsg(self, target, nick, message):
#     def on_action(self, target, nick, action):
#     def on_join(self, nick, channel):
#     def on_part(self, nick, channel, message):
#     def on_self_join(self, channel):
#     def on_self_part(self, channel):
#     def on_kick(self, nick, channel, knick, reason):
#     def on_quit(self, nick, message):
#     def on_command(self, target, nick, command, commandtext, mod, admin):
#     def on_numeric(self, numeric, data):
#     def message(self, target, nick, message, parse=False):
#     def notice(self, nick, message, parse=False):
#     def action(self, target, action, parse=False):
#     def mode(self, target, modes):
#     def ban(self, nick, channel, quiet=False):
#     def getMask(self, nick):
#     def send_raw(self, raw_message):
#     def debug(self, message, format=False):
#     def log(self, message):
#     def log_verbose(self, message):
#     def warning(self, message):
#     def notice_verbose(self, message):
#     def warning_verbose(self, message):
#     def error(self, message):
#     def isOp(self, nick, channel):
#     def isVoice(self, nick, channel):
#     def isOn(self, nick, channel):
#     def isIdentified(self, nick):
#     def isOper(self, nick):
#     def getUserData(self, nick):
#     def getChannelData(self, channel):
#     def isBotAdministrator(self, nick):
#     def isBotModerator(self, nick):
#     def ratelimit(self, command, confName="rate_limit_delay", delay=10):
#     def register_command(self, command, params, help, priv, aliases=None):
#     def unregister_command(self, command):
#     def getConfigMetadata(self, metadata):
#     def requireApiKey(self, api_name):
#     def _getApiKey(self, api_name):
#     def _unregister_commands(self):
#     def _getModuleData(self):
# 
# Path: tools/duration.py
# def timesincetimestamp(timestamp, now=None):
# def timebeforetimestamp(timestamp, now=None):
# def timesince(d, now=None):
# def timeuntil(d, now=None):
# 
# Path: tools/validator.py
# class Validator:
#     def __init__(self):
#     def hostmask(self, hostmask, require_nickname=False):
#     def nickname(self, nick):
#     def channel(self, channel):


# Path: modules/seen.py
from core import moduletemplate
from tools import duration
from tools import validator
import os
import random
import sqlite3
import time

        try:
            conn = sqlite3.connect(self.db_file)
            c = conn.cursor()
            result = c.execute("SELECT nick FROM seen WHERE lower(nick) = ?", [nickname])

            if result.fetchone():
                seen = True

            conn.close()
        except sqlite3.Error as e:
            self.error("was_seen({}) error: {}".format(nickname, str(e)))

        return seen

    def get_seen(self, nickname):
        if not self.validator.nickname(nickname):
            self.warning("seen: Tried to get seen data from invalid nickname {}".format(nickname))
            return False

        nickname = nickname.lower()
        response = ""

        try:
            conn = sqlite3.connect(self.db_file)
            c = conn.cursor()
            result = c.execute("SELECT * FROM seen WHERE lower(nick) = ?", [nickname]).fetchone()

            if len(result) > 4:
                response = ("{} ({}) was last seen on {} ({} ago) {}"
                            .format(result[0], result[1], result[2],

                                    duration.timesincetimestamp(int(result[3])), result[4]))