mirror of https://github.com/stijndcl/didier
List total commands per day instead of total usages per command
parent
119d7c8dca
commit
e56de111eb
|
@ -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
|
|
@ -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):
|
||||||
|
|
|
@ -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, ...)
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
from discord.ext import commands
|
|
||||||
|
|
||||||
|
|
||||||
def updateFile(ctx: commands.Context):
|
|
||||||
prefix_used = ctx.prefix
|
|
||||||
command: commands.Command = ctx.command
|
|
||||||
pass
|
|
|
@ -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()
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue