# 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 sqlite3
import os
import time
"""




class Tell(moduletemplate.BotModule):

    def on_module_load(self):
        self.db_file = os.path.join(self.db_dir, "{}_tell.db".format(self.network_name))

        self.register_command("tell", "<nickname> <message>",
                              "Once <nickname> appears online (by sending a message to a channel I am in), "
                              "message them with <message>", self.PRIV_NONE, ["note"])
        self.register_command("telldel", "<nickname | *>",
                              "Delete all pending messages for <nickname>, or all if * is specified.",
                              self.PRIV_NONE, ["deltell", "delnote"])
        self.register_command("tellslist", None,
                              "Show if you have any pending messages or not, if you do, they are sent to your query.",
                              self.PRIV_NONE, ["listtells", "listtell", "notelist", "noteslist", "listnotes"])
        self.register_command("tellhas", "[nickname]", "Check if [nickname] has any pending tells.",
                              self.PRIV_NONE, ["hastell", "hastells", "hasnote"])
        self.register_command("tells", None, "Count the number of active tells in the database.",
                              self.PRIV_MOD, ["notes"])

        if "max_tells" not in self.module_data:
            self.module_data["max_tells"] = 5

        self.hastells = {}

        self.tell_make_db()

# 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/tell.py
from core import moduletemplate
from tools import duration
from tools import validator
import sqlite3
import os
import time

"""




class Tell(moduletemplate.BotModule):

    def on_module_load(self):
        self.db_file = os.path.join(self.db_dir, "{}_tell.db".format(self.network_name))

        self.register_command("tell", "<nickname> <message>",
                              "Once <nickname> appears online (by sending a message to a channel I am in), "
                              "message them with <message>", self.PRIV_NONE, ["note"])
        self.register_command("telldel", "<nickname | *>",
                              "Delete all pending messages for <nickname>, or all if * is specified.",
                              self.PRIV_NONE, ["deltell", "delnote"])
        self.register_command("tellslist", None,
                              "Show if you have any pending messages or not, if you do, they are sent to your query.",
                              self.PRIV_NONE, ["listtells", "listtell", "notelist", "noteslist", "listnotes"])
        self.register_command("tellhas", "[nickname]", "Check if [nickname] has any pending tells.",
                              self.PRIV_NONE, ["hastell", "hastells", "hasnote"])
        self.register_command("tells", None, "Count the number of active tells in the database.",
                              self.PRIV_MOD, ["notes"])

        if "max_tells" not in self.module_data:
            self.module_data["max_tells"] = 5

        self.hastells = {}

        self.tell_make_db()

        self.validator = validator.Validator()