Added query limits of 200 / 24h

This commit is contained in:
Paillat
2022-11-27 12:28:02 +01:00
parent edfe0b96e7
commit 31e0b5f033

View File

@@ -3,6 +3,7 @@ import discord # pip install pycord
from discord import File, Intents # pip install pycord from discord import File, Intents # pip install pycord
import logging # pip install logging import logging # pip install logging
import sqlite3 # pip install sqlite3 import sqlite3 # pip install sqlite3
import asyncio # pip install asyncio
#set the debug mode to the maximum #set the debug mode to the maximum
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
def debug(message): def debug(message):
@@ -13,7 +14,7 @@ conn = sqlite3.connect('data.db')
c = conn.cursor() c = conn.cursor()
# Create table called "data" if it does not exist with the following columns: guild_id, channel_id, api_key, is_active, max_tokens, temperature, frequency_penalty, presence_penalty, uses_count_today, prompt_size # Create table called "data" if it does not exist with the following columns: guild_id, channel_id, api_key, is_active, max_tokens, temperature, frequency_penalty, presence_penalty, uses_count_today, prompt_size
c.execute('''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)''') c.execute('''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)''')
Intents =discord.Intents.all() # enable all intents Intents =discord.Intents.all() # enable all intents
Intents.members = True Intents.members = True
bot = discord.Bot(intents=Intents.all()) bot = discord.Bot(intents=Intents.all())
@@ -132,7 +133,12 @@ async def on_message(message):
c.execute("SELECT channel_id FROM data WHERE guild_id = ?", (message.guild.id,)) c.execute("SELECT channel_id FROM data WHERE guild_id = ?", (message.guild.id,))
if str(message.channel.id) != str(c.fetchone()[0]): if str(message.channel.id) != str(c.fetchone()[0]):
return return
#check if the bot hasn't been used more than 200 times in the last 24 hours (uses_count_today)
c.execute("SELECT uses_count_today FROM data WHERE guild_id = ?", (message.guild.id,))
if c.fetchone()[0] >= 200:
return
#add 1 to the uses_count_today
c.execute("UPDATE data SET uses_count_today = uses_count_today + 1 WHERE guild_id = ?", (message.guild.id,))
#get the api key from the database #get the api key from the database
c.execute("SELECT api_key FROM data WHERE guild_id = ?", (message.guild.id,)) c.execute("SELECT api_key FROM data WHERE guild_id = ?", (message.guild.id,))
api_key = c.fetchone()[0] api_key = c.fetchone()[0]
@@ -169,7 +175,7 @@ async def on_message(message):
await message.channel.send("The AI is not sure what to say (the response was empty)") await message.channel.send("The AI is not sure what to say (the response was empty)")
debug("The response was empty") debug("The response was empty")
debug("The response has been sent") debug("The response has been sent")
#get the message content #get the message content
# add a slash command called "say" that sends a message to the channel # add a slash command called "say" that sends a message to the channel
@bot.slash_command() @bot.slash_command()
@@ -182,6 +188,16 @@ async def clear(ctx):
await ctx.respond("messages deleted!", ephemeral=True) await ctx.respond("messages deleted!", ephemeral=True)
return await ctx.channel.purge() return await ctx.channel.purge()
#at the end of the day reset the uses_count_today to 0 for all the guilds
async def reset_uses_count_today():
await bot.wait_until_ready()
while not bot.is_closed():
c.execute("UPDATE data SET uses_count_today = 0")
conn.commit()
await asyncio.sleep(86400)
# on startup run the reset_uses_count_today function
bot.loop.create_task(reset_uses_count_today())
#run the bot #run the bot
# Replace the following with your bot's token # Replace the following with your bot's token
bot.run("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") bot.run("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")