2022-12-08 22:21:53 +01:00
import logging
import sqlite3
2023-07-15 12:20:38 +02:00
import json
2023-02-02 21:44:40 +01:00
from dotenv import load_dotenv
import os
2023-03-06 14:32:44 +01:00
import openai
2023-03-31 14:09:06 +02:00
2023-02-02 21:44:40 +01:00
load_dotenv ( )
perspective_api_key = os . getenv ( " PERSPECTIVE_API_KEY " )
2023-02-28 15:28:14 +01:00
discord_token = os . getenv ( " DISCORD_TOKEN " )
2023-03-09 16:22:15 +01:00
webhook_url = os . getenv ( " WEBHOOK_URL " )
2022-12-10 01:32:50 +01:00
max_uses : int = 400
2022-12-08 22:21:53 +01:00
logging . basicConfig ( level = logging . INFO )
2023-03-31 14:09:06 +02:00
os . environ [
" GOOGLE_APPLICATION_CREDENTIALS "
] = " ./../database/google-vision/botator.json "
2023-07-15 12:20:38 +02:00
with open ( os . path . abspath ( os . path . join ( " src " , " prompts " , " functions.json " ) ) ) as f :
functions = json . load ( f )
2023-03-15 22:30:54 +01:00
2022-12-08 22:21:53 +01:00
def debug ( message ) :
2023-03-31 14:09:06 +02:00
# if the os is windows, we logging.info(message), if
2023-03-17 11:27:25 +01:00
if os . name == " nt " :
logging . info ( message )
2023-04-02 14:23:12 +02:00
else :
2023-04-02 16:34:48 +02:00
print ( message )
2023-03-17 11:27:25 +01:00
2023-05-05 12:38:02 +02:00
def ctx_to_guid ( ctx ) :
if ctx . guild is None :
return ctx . author . id
else :
return ctx . guild . id
def mg_to_guid ( mg ) :
if mg . guild is None :
return mg . author . id
else :
return mg . guild . id
2023-03-31 14:09:06 +02:00
2023-07-15 12:20:38 +02:00
con_data = sqlite3 . connect ( " ./database/data.db " )
2023-03-31 14:20:43 +02:00
curs_data = con_data . cursor ( )
2023-07-15 12:20:38 +02:00
con_premium = sqlite3 . connect ( " ./database/premium.db " )
2023-03-31 14:20:43 +02:00
curs_premium = con_premium . cursor ( )
2022-12-08 22:21:53 +01:00
2023-03-31 14:20:43 +02:00
curs_data . execute (
2023-03-31 14:09:06 +02:00
""" CREATE TABLE IF NOT EXISTS data (guild_id text, channel_id text, api_key text, is_active boolean, max_tokens integer, temperature real, frequency_penalty real, presence_penalty real, uses_count_today integer, prompt_size integer, prompt_prefix text, tts boolean, pretend_to_be text, pretend_enabled boolean) """
)
# we delete the moderation table and create a new one, with all theese parameters as floats: TOXICITY: {result[0]}; SEVERE_TOXICITY: {result[1]}; IDENTITY ATTACK: {result[2]}; INSULT: {result[3]}; PROFANITY: {result[4]}; THREAT: {result[5]}; SEXUALLY EXPLICIT: {result[6]}; FLIRTATION: {result[7]}; OBSCENE: {result[8]}; SPAM: {result[9]}
2023-02-03 20:05:49 +01:00
expected_columns = 14
2023-03-31 14:09:06 +02:00
# we delete the moderation table and create a new one
2023-03-31 14:20:43 +02:00
curs_data . execute (
2023-03-31 14:09:06 +02:00
""" CREATE TABLE IF NOT EXISTS moderation (guild_id text, logs_channel_id text, is_enabled boolean, mod_role_id text, toxicity real, severe_toxicity real, identity_attack real, insult real, profanity real, threat real, sexually_explicit real, flirtation real, obscene real, spam real) """
)
2023-03-31 14:20:43 +02:00
# This code returns the number of columns in the table "moderation" in the database "data.db".
curs_data . execute ( " PRAGMA table_info(moderation) " )
result = curs_data . fetchall ( )
2023-02-03 20:05:49 +01:00
actual_columns = len ( result )
2023-03-31 14:20:43 +02:00
2023-02-03 20:05:49 +01:00
if actual_columns != expected_columns :
2023-03-31 14:09:06 +02:00
# we add the new columns
2023-03-31 14:20:43 +02:00
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN toxicity real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN severe_toxicity real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN identity_attack real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN insult real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN profanity real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN threat real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN sexually_explicit real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN flirtation real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN obscene real " )
curs_data . execute ( " ALTER TABLE moderation ADD COLUMN spam real " )
2023-02-03 20:05:49 +01:00
else :
print ( " Table already has the correct number of columns " )
2023-03-31 14:20:43 +02:00
# This code creates the model table if it does not exist
curs_data . execute (
""" CREATE TABLE IF NOT EXISTS model (guild_id text, model_name text) """
)
# This code creates the images table if it does not exist
curs_data . execute (
2023-03-31 14:09:06 +02:00
""" CREATE TABLE IF NOT EXISTS images (guild_id text, usage_count integer, is_enabled boolean) """
)
2023-03-31 14:20:43 +02:00
# This code creates the data table if it does not exist
curs_premium . execute (
2023-03-31 14:09:06 +02:00
""" CREATE TABLE IF NOT EXISTS data (user_id text, guild_id text, premium boolean) """
)
2023-03-31 14:20:43 +02:00
# This code creates the channels table if it does not exist
curs_premium . execute (
2023-03-31 14:09:06 +02:00
""" CREATE TABLE IF NOT EXISTS channels (guild_id text, channel0 text, channel1 text, channel2 text, channel3 text, channel4 text) """
)