Files
Botator/code/cogs/setup.py

80 lines
4.9 KiB
Python
Raw Normal View History

2022-12-08 22:21:53 +01:00
import discord
from config import debug, conn, c
class Setup (discord.Cog) :
def __init__(self, bot: discord.Bot):
super().__init__()
self.bot = bot
@discord.slash_command(name="setup", description="Setup the bot")
@discord.option(name="channel_id", description="The channel id", required=True)
@discord.option(name="api_key", description="The api key", required=True)
async def setup(self, ctx: discord.ApplicationContext, channel: discord.TextChannel, api_key: str):
#check if the api key is valid
debug(f"The user {ctx.author} ran the setup command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
#check if the channel is valid
if channel is None:
await ctx.respond("Invalid channel id", ephemeral=True)
return
#check if the guild is already in the database bi checking if there is a key for the guild
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
if c.fetchone() is not None:
#in this case, the guild is already in the database, so we update the channel id and the api key
c.execute("UPDATE data SET channel_id = ?, api_key = ? WHERE guild_id = ?", (channel.id, api_key, ctx.guild.id))
#we will also set the advanced settings to their default values
c.execute("UPDATE data SET is_active = ?, max_tokens = ?, temperature = ?, frequency_penalty = ?, presence_penalty = ?, prompt_size = ? WHERE guild_id = ?", (False, 64, 0.9, 0.0, 0.0, 5, ctx.guild.id))
conn.commit()
await ctx.respond("The channel id and the api key have been updated", ephemeral=True)
else:
#in this case, the guild is not in the database, so we add it
c.execute("INSERT INTO data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (ctx.guild.id, channel.id, api_key, False, 64, 0.9, 0.0, 0.0, 0, 5, "", False, "", False))
conn.commit()
await ctx.respond("The channel id and the api key have been added", ephemeral=True)
@discord.slash_command(name="delete", description="Delete the information about this server")
##@discord.commands.permissions(administrator=True)
async def delete(self, ctx: discord.ApplicationContext):
debug(f"The user {ctx.author} ran the delete command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
#check if the guild is in the database
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
if c.fetchone() is None:
await ctx.respond("This server is not setup", ephemeral=True)
return
#delete the guild from the database, except the guild id and the uses_count_today
c.execute("UPDATE data SET api_key = ?, channel_id = ?, is_active = ?, max_tokens = ?, temperature = ?, frequency_penalty = ?, presence_penalty = ?, prompt_size = ? WHERE guild_id = ?", (None, None, False, 50, 0.9, 0.0, 0.0, 0, ctx.guild.id))
conn.commit()
await ctx.respond("Deleted", ephemeral=True)
#create a command called "enable" that only admins can use
@discord.slash_command(name="enable", description="Enable the bot")
##@discord.commands.permissions(administrator=True)
async def enable(self, ctx: discord.ApplicationContext):
#if the guild is eqal to 1014156298226515970, the guild is banned
if ctx.guild.id == 1014156298226515970:
await ctx.respond("This server is banned for bad and nsfw use.", ephemeral=True)
return
#check if the guild is in the database
debug(f"The user {ctx.author} ran the enable command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
if c.fetchone() is None:
await ctx.respond("This server is not setup", ephemeral=True)
return
#enable the guild
c.execute("UPDATE data SET is_active = ? WHERE guild_id = ?", (True, ctx.guild.id))
conn.commit()
await ctx.respond("Enabled", ephemeral=True)
#create a command called "disable" that only admins can use
@discord.slash_command(name="disable", description="Disable the bot")
##@discord.commands.permissions(administrator=True)
async def disable(self, ctx: discord.ApplicationContext):
debug(f"The user {ctx.author} ran the disable command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
#check if the guild is in the database
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
if c.fetchone() is None:
await ctx.respond("This server is not setup", ephemeral=True)
return
#disable the guild
c.execute("UPDATE data SET is_active = ? WHERE guild_id = ?", (False, ctx.guild.id))
conn.commit()
await ctx.respond("Disabled", ephemeral=True)