from textgenrnn import textgenrnn
import discord
from discord.ext import commands
import regex as re
import functools

textgen = textgenrnn(name="insert3")
client = commands.Bot(command_prefix='.')
boton = False

def add_to_train(clean_content):
    print(clean_content)
    with open("train.txt", "a") as train:
        train.write(f"{clean_content} \n")

@client.event
async def on_message(message):
    await client.process_commands(message)
    urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',message.content.lower())
    if not message.attachments:
        if boton:
            if message.content.lower().startswith("$"):
                pass
            elif urls:
                pass
            elif message.author.bot:
                pass
            elif message.content.lower().startswith("p!"):
                pass
            elif message.content.lower().startswith("—"):
                pass
            else:
                writing_function = functools.partial(add_to_train, message.clean_content)
                await client.loop.run_in_executor(None, writing_function)

@commands.is_owner()
@client.command()
async def train(ctx):
    global boton
    boton = True
    await ctx.send("I am now training what to say based on your messages")

@commands.is_owner()
@client.command()
async def stopbot(ctx):
    async with ctx.typing:
        training_function = functools.partial(textgen.train_from_file, 'train.txt', num_epochs=11)
        await client.loop.run_in_executor(None, training_function)
    await ctx.send("data collection done, I will now log of discord and build an a.i")
    await client.logout()


client.run('BOTTOKEN')
