Keep track of # of times commands are run
This commit is contained in:
parent
4d29721fca
commit
460c4c4935
@ -28,6 +28,7 @@ class MyBot(commands.Bot):
|
||||
|
||||
bot = MyBot()
|
||||
bot.remove_command("help")
|
||||
bot.temp_command_count = {} # command_name: count
|
||||
|
||||
|
||||
@bot.event
|
||||
|
70
code/cogs/owner/stats.py
Normal file
70
code/cogs/owner/stats.py
Normal file
@ -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))
|
Loading…
x
Reference in New Issue
Block a user