140 lines
5 KiB
Python
140 lines
5 KiB
Python
from textgenrnn import textgenrnn
|
||
import disnake
|
||
from disnake.ext import commands
|
||
import regex as re
|
||
import functools
|
||
from aitextgen import aitextgen
|
||
import subprocess
|
||
from chatterbot import ChatBot
|
||
|
||
textgen = textgenrnn('insert3_weights.hdf5')
|
||
ai = aitextgen()
|
||
bot = ChatBot(
|
||
'insert3',
|
||
storage_adapter='chatterbot.storage.SQLStorageAdapter',
|
||
logic_adapters=[
|
||
'chatterbot.logic.BestMatch'
|
||
],
|
||
database_uri='sqlite:///database.sqlite3'
|
||
)
|
||
client = commands.Bot(command_prefix='.', test_guilds=[732793772697583623])
|
||
boton = True
|
||
|
||
|
||
def add_to_train(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
|
||
elif message.channel.id == 817397092376117248:
|
||
pass
|
||
elif message.channel.id == 779060858449821716:
|
||
pass
|
||
elif message.content.lower().startswith("."):
|
||
pass
|
||
elif message.content.lower().startswith("?"):
|
||
pass
|
||
elif message.content.lower().startswith("!"):
|
||
pass
|
||
elif message.content.lower().startswith("—"):
|
||
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)
|
||
if message.channel.id == 934533774249713664:
|
||
bot_response = bot.get_response(message.clean_content)
|
||
await message.channel.send(bot_response)
|
||
|
||
@client.slash_command(description="get a quote from the ai")
|
||
async def aiquote(inter):
|
||
await inter.response.defer()
|
||
try:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await inter.response.send_message(content=f"{quote}")
|
||
except:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await inter.edit_original_message(content=f"{quote}")
|
||
|
||
@client.slash_command(description="give the ai a prompt to finish off")
|
||
async def aiprompt(inter, prompt: str):
|
||
await inter.response.defer()
|
||
endmsg = subprocess.check_output(['python3','promptai.py',f'{prompt}'])
|
||
non = endmsg.replace("%1B[1m".encode(), "**".encode())
|
||
nona = non.replace("%1B[0m".encode(), "**".encode())
|
||
nor = nona.replace("[1m".encode(), "".encode())
|
||
nora = nor.replace("[0m".encode(), "".encode())
|
||
norx = nora.replace("\x1b[1m".encode(), "".encode())
|
||
nore = norx.replace("\\x1b[1m".encode(), "".encode())
|
||
nor1 = nore.replace("\x1b[0m".encode(), "".encode())
|
||
nor2 = nor1.replace("\\x1b[0m".encode(), "".encode())
|
||
finalmsg = nor2.decode("utf-8")
|
||
print(finalmsg)
|
||
await inter.edit_original_message(content=f"{finalmsg}")
|
||
|
||
@client.command()
|
||
async def aiquote(ctx):
|
||
try:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await ctx.send(quote)
|
||
except:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await ctx.send(quote)
|
||
|
||
@client.command()
|
||
async def aiprompt(ctx):
|
||
prompt = ctx.message.content[10:]
|
||
endmsg = subprocess.check_output(['python3','promptai.py',f'{prompt}'])
|
||
non = endmsg.replace("%1B[1m".encode(), "**".encode())
|
||
nona = non.replace("%1B[0m".encode(), "**".encode())
|
||
nor = nona.replace("[1m".encode(), "".encode())
|
||
nora = nor.replace("[0m".encode(), "".encode())
|
||
norx = nora.replace("\x1b[1m".encode(), "".encode())
|
||
nore = norx.replace("\\x1b[1m".encode(), "".encode())
|
||
nor1 = nore.replace("\x1b[0m".encode(), "".encode())
|
||
nor2 = nor1.replace("\\x1b[0m".encode(), "".encode())
|
||
finalmsg = nor2.decode("utf-8")
|
||
print(finalmsg)
|
||
await ctx.send(finalmsg)
|
||
|
||
@client.command()
|
||
async def aidel(ctx):
|
||
await ctx.message.delete()
|
||
try:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await ctx.send(quote)
|
||
except:
|
||
textgen.generate_to_file('insert3.txt', n=1)
|
||
with open("insert3.txt") as f:
|
||
quote = f.read()
|
||
await ctx.send(quote)
|
||
|
||
|
||
client.run('bottoken')
|