List total commands per day instead of total usages per command

pull/70/head
Stijn De Clercq 2021-06-19 17:45:26 +02:00
parent 119d7c8dca
commit e56de111eb
6 changed files with 88 additions and 17 deletions

1
.gitignore vendored
View File

@ -9,7 +9,6 @@ files/lost.json
files/locked.json files/locked.json
files/database.json files/database.json
files/ufora_notifications.json files/ufora_notifications.json
files/commands.json
.idea/ .idea/
__pycache__ __pycache__
.env .env

View File

@ -3,8 +3,7 @@ import datetime
import discord import discord
from discord.ext import commands from discord.ext import commands
from functions import checks, easterEggResponses from functions import checks, easterEggResponses
from functions.database import stats, muttn, custom_commands from functions.database import stats, muttn, custom_commands, commands as command_stats
from functions import commands as command_stats
import pytz import pytz
import time import time
import traceback import traceback
@ -96,7 +95,8 @@ class Events(commands.Cog):
print("{} in {}: {}".format(ctx.author.display_name, print("{} in {}: {}".format(ctx.author.display_name,
"DM" if DM else "{} ({})".format(ctx.channel.name, ctx.guild.name), "DM" if DM else "{} ({})".format(ctx.channel.name, ctx.guild.name),
ctx.message.content)) ctx.message.content))
command_stats.updateFile(ctx)
command_stats.invoked()
@commands.Cog.listener() @commands.Cog.listener()
async def on_command_error(self, ctx, err): async def on_command_error(self, ctx, err):

View File

@ -24,6 +24,13 @@ Used in stats.py - Stats.Channels & the daily task that updates the message coun
0 channel_id: bigint, unique, primary key | The channel id of this channel 0 channel_id: bigint, unique, primary key | The channel id of this channel
1 message_count: numeric | The amount of messages sent in this channel 1 message_count: numeric | The amount of messages sent in this channel
### command_stats
Used in commands.py, tracks counters of how many commands are invoked per day.
0 day: date, unique, primary key | The date that is being tracked
1 amount: integer | The total amount of commands that were invoked on this day
### currencytable ### currencytable
Used in all Currency commands (Dinks, Bank, Bitcoin, Gambling, ...) Used in all Currency commands (Dinks, Bank, Bitcoin, Gambling, ...)

View File

@ -1,7 +0,0 @@
from discord.ext import commands
def updateFile(ctx: commands.Context):
prefix_used = ctx.prefix
command: commands.Command = ctx.command
pass

View File

@ -0,0 +1,78 @@
from functions.database import utils
import time
def invoked():
t = time.localtime()
day_string: str = f"{t.tm_year}-{_lz(t.tm_mon)}-{_lz(t.tm_mday)}"
_update(day_string)
def _lz(arg: int) -> str:
"""
Add leading zeroes if necessary (YYYY-MM-DD)
"""
arg = str(arg)
if len(arg) == 1:
return f"0{arg}"
return arg
def _is_present(date: str) -> bool:
"""
Check if a given date is present in the database
"""
connection = utils.connect()
cursor = connection.cursor()
cursor.execute("SELECT * FROM command_stats WHERE day = %s", (date,))
res = cursor.fetchone()
if res:
return True
return False
def _add_date(date: str):
"""
Add a date into the db
"""
connection = utils.connect()
cursor = connection.cursor()
cursor.execute("INSERT INTO command_stats(day, amount) VALUES (%s, 1)", (date,))
connection.commit()
def _update(date: str):
"""
Increase the counter for a given day
"""
# Date wasn't present yet, add it with a value of 1
if not _is_present(date):
_add_date(date)
return
connection = utils.connect()
cursor = connection.cursor()
cursor.execute("""
UPDATE command_stats
SET amount = amount + 1
WHERE day = %s
""", (date,))
connection.commit()
def _get_all():
"""
Get all rows
"""
connection = utils.connect()
cursor = connection.cursor()
cursor.execute("SELECT * FROM command_stats")
return cursor.fetchall()

View File

@ -10,12 +10,6 @@ Contains the application's token to connect to Discord. You can create your own
token_goes_here token_goes_here
### files/commands.json
Contains info on every command's usage. These are dynamically added, so this is just an emtpy json file.
{}
### files/database.json ### files/database.json
Contains the credentials needed to connect to the PSQL database. This is ignored so that I don't have to leak my IP address, but also so that you can set up a local database to mess around without affecting the Live one or having to change any code. Contains the credentials needed to connect to the PSQL database. This is ignored so that I don't have to leak my IP address, but also so that you can set up a local database to mess around without affecting the Live one or having to change any code.