#!/usr/bin/env python
from operator import attrgetter

import discord

import db
import util
from schemas.dis_s import ATTRMAP


class DiscordClient(discord.Client):
    def __init__(self, *args, **kwargs):
        self.logger = None
        self.did_something = False
        name = self.__class__.__name__
        self.log = util.get_logger(name)

        super().__init__(*args, **kwargs)

    async def on_ready(self):
        self.log.info("Discord connection established.")

    def recurse_dict(self, obj):
        to_return = {}
        for key, mapped in ATTRMAP.items():
            try:
                to_return[key] = attrgetter(mapped)(obj)
            except AttributeError:
                continue

        return to_return

    async def on_message(self, message):
        if not message.content:
            return

        a = self.recurse_dict(message)
        # a["ts"] = a["time"].isoformat()
        a["ts"] = int(a["time"].timestamp())
        del a["time"]
        a["type"] = "msg"
        a["src"] = "dis"

        db.store_message(a)
