import discord
from discord import app_commands
import logging
import re


class TikTok:
    def __init__(self, bot):
        self.bot = bot
        self.logger = logging.getLogger('TikTok')
        self.logger.setLevel(logging.DEBUG)
        handler = logging.FileHandler(filename='log/selena.log', encoding='utf-8', mode='w')
        handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s'))
        self.logger.addHandler(handler)

    async def on_message(self, message):
        if message.author.bot:
            return

        tiktok_url = self.extract_tiktok_url(message.content)
        if tiktok_url:
            embed = self.create_tiktok_embed(tiktok_url)
            await message.channel.send(embed=embed)
            await message.delete()
            await message.author.send("Your TikTok video has been properly embedded.")

    def extract_tiktok_url(self, content):
        tiktok_regex = re.compile(
            r'(https?://(?:www\.)?tiktok\.com/[^ ]+|https?://vm\.tiktok\.com/[^ ]+)')
        match = tiktok_regex.search(content)
        return match.group(0) if match else None

    def create_tiktok_embed(self, url):
        embed = discord.Embed(title="TikTok Video", description="Here is the TikTok video:", url=url)
        embed.set_author(name="TikTok", icon_url="https://upload.wikimedia.org/wikipedia/en/a/a9/TikTok_logo.svg")
        embed.add_field(name="Link", value=f"[Watch on TikTok]({url})")
        embed.set_footer(text="TikTok Embed Module")
        return embed

    def setup(self, tree: app_commands.CommandTree):
        pass


def setup(bot):
    tiktok = TikTok(bot)
    bot.add_listener(tiktok.on_message, "on_message")
    bot.tiktok_module = tiktok