diff --git a/code/cogs/chat.py b/code/cogs/chat.py index 1fa896b..ad4b548 100644 --- a/code/cogs/chat.py +++ b/code/cogs/chat.py @@ -2,7 +2,7 @@ import discord import re import asyncio import openai -from config import debug, c, max_uses, cp +from config import debug, c, max_uses, cp, conn, connp import random class Chat (discord.Cog) : def __init__(self, bot: discord.Bot): @@ -39,15 +39,19 @@ class Chat (discord.Cog) : return #check if the bot hasn't been used more than 5000 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] >= 500: + uses = c.fetchone()[0] + cp.execute("SELECT premium FROM data WHERE user_id = ? AND guild_id = ?", (message.author.id, message.guild.id)) + premium = cp.fetchone() + if c.fetchone()[0] >= 500 and premium != 1: debug(f"The bot has been used more than {max_uses} times in the last 24 hours in this guild. Please try again in 24h.") - await message.channel.send("The bot has been used more than 5000 times in the last 24 hours in this guild. Please try again in 24h.") + await message.channel.send("The bot has been used more than 500 times in the last 24 hours in this guild. Please try again in 24h.") return #add 1 to the uses_count_today #show that the bot is typing await message.channel.trigger_typing() if message.guild.id != 1021872219888033903: c.execute("UPDATE data SET uses_count_today = uses_count_today + 1 WHERE guild_id = ?", (message.guild.id,)) + conn.commit() #get the api key from the database c.execute("SELECT api_key FROM data WHERE guild_id = ?", (message.guild.id,)) api_key = c.fetchone()[0] diff --git a/code/resetter.py b/code/resetter.py new file mode 100644 index 0000000..9c8e63a --- /dev/null +++ b/code/resetter.py @@ -0,0 +1,10 @@ +import sqlite3 +conn = sqlite3.connect('../database/data.db') +c = conn.cursor() +import time +#the database is: 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, prompt_prefix text, tts boolean, pretend_to_be text, pretend_enabled boolean)''') +#set the uses_count_today to 0 for all guilds every 24 hours +while True: + c.execute("UPDATE data SET uses_count_today = 0") + conn.commit() + time.sleep(86400) \ No newline at end of file diff --git a/docker/resetter/Dockerfile b/docker/resetter/Dockerfile new file mode 100644 index 0000000..83cc38d --- /dev/null +++ b/docker/resetter/Dockerfile @@ -0,0 +1,17 @@ + +# For more information, please refer to https://aka.ms/vscode-docker-python +FROM python:3.10.0 + + +# Keeps Python from generating .pyc files in the container + +# Turns off buffering for easier container logging +ENV PYTHONUNBUFFERED=1 + +# Install pip requirements +RUN git clone https://github.com/Paillat-dev/Botator.git +WORKDIR /Botator/code/ +# Creates a non-root user with an explicit UID and adds permission to access the /app folder +RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /Botator/code +USER appuser +CMD ["python", "resetter.py"]