diff options
Diffstat (limited to 'code/cogs')
-rw-r--r-- | code/cogs/owner/stats.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/code/cogs/owner/stats.py b/code/cogs/owner/stats.py new file mode 100644 index 0000000..f6a7dec --- /dev/null +++ b/code/cogs/owner/stats.py @@ -0,0 +1,70 @@ +from discord.ext import commands, tasks +from discord import app_commands +import sqlite3 +import discord + +from global_variables import BOT_COLOR + + +class Stats(commands.Cog): + def __init__(self, bot): + self.bot = bot + + def cog_load(self): + connection = sqlite3.connect('count.db') + cursor = connection.cursor() + cursor.execute("CREATE TABLE IF NOT EXISTS count (command_name, count, PRIMARY KEY (command_name))") + connection.commit() + connection.close() + + self.dump_count.start() + + @tasks.loop(seconds=30) + async def dump_count(self): + connection = sqlite3.connect('count.db') + cursor = connection.cursor() + + for command_name, count in self.bot.temp_command_count.items(): + try: + cursor.execute("INSERT INTO count (command_name, count) VALUES (?, ?)", (command_name, count)) + except sqlite3.IntegrityError: + cursor.execute("UPDATE count SET count = count + ? WHERE command_name = ?", (count, command_name)) + + connection.commit() + connection.close() + self.bot.temp_command_count = {} + + + @commands.Cog.listener() + async def on_app_command_completion(self, interaction, command): + try: + self.bot.temp_command_count[interaction.command.name] += 1 + except KeyError: + self.bot.temp_command_count[interaction.command.name] = 1 + + + @commands.command() + @commands.dm_only() + @commands.is_owner() + async def stats(self, ctx: commands.Context): + connection = sqlite3.connect('count.db') + cursor = connection.cursor() + + embed = discord.Embed( + title="Command Statistics", + color=BOT_COLOR + ) + + total = 0 + data = cursor.execute("SELECT * FROM count").fetchall() + for entry in data: + embed.add_field(name=entry[0], value=f"` {entry[1]} `", inline=True) + total += entry[1] + + embed.add_field(name="TOTAL", value=f"` {total} `", inline=False) + + await ctx.send(embed=embed) + + +async def setup(bot): + await bot.add_cog(Stats(bot)) |