import sys
import time
import discord
import re

import sqlite3


def planespottle(message : discord.message, reverse):
    if reverse == True:
        reverse = -1
    else:
        reverse = 1

    conn = sqlite3.connect('stats.db')
    cursor = conn.cursor()
    
    PATTERN = r"Planespottle #[0-9]+ in (\d)/5"
    FAIL_PATTERN = r"Planespottle #[0-9]+ failed to guess!"


    total_guesses = 0
    total_games = 0
    wins = 0
    sync_time = 0
    new_sync_time = (int)(time.mktime(message.created_at.timetuple()))

    cursor.execute('''SELECT * FROM PLANESPOTTLE WHERE NAME = ?''', (message.author.id,))

    data = cursor.fetchone()

    if data:
        total_games = data[1]
        wins = data[2]
        total_guesses = data[4]
        sync_time = data[6]
        if sync_time > new_sync_time and reverse == 1:
            return

    match = re.search(FAIL_PATTERN, message.content.strip())
    if not match:
        match = re.search(PATTERN, message.content.strip())
                
        guesses = match.group(1)
        total_guesses += int(guesses) * reverse
        wins += 1 * reverse

    total_games += 1 * reverse

    if wins != 0:
        average_guesses = total_guesses / wins
    else:
        average_guesses = 0


    win_rate = (wins / total_games) * 100

    cursor.execute('''INSERT OR REPLACE INTO PLANESPOTTLE VALUES(?, ?, ?, ?, ?, ?, ?)''',
                   (message.author.id,total_games,wins,win_rate,total_guesses,average_guesses,new_sync_time))

    conn.commit()
    conn.close()