mirror of https://github.com/stijndcl/didier
Compare commits
No commits in common. "a06fcdefe00ae1bdb598e001b3c74f529020e2eb" and "f6d06eb489a76cae92cb525356f298285884744e" have entirely different histories.
a06fcdefe0
...
f6d06eb489
|
|
@ -3,7 +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
|
||||||
import pytz
|
import pytz
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
|
@ -75,12 +75,6 @@ class Events(commands.Cog):
|
||||||
if eER:
|
if eER:
|
||||||
await message.channel.send(eER)
|
await message.channel.send(eER)
|
||||||
|
|
||||||
# Check for custom commands
|
|
||||||
custom = custom_commands.is_custom_command(message)
|
|
||||||
|
|
||||||
if custom.id is not None:
|
|
||||||
await message.channel.send(custom.response)
|
|
||||||
|
|
||||||
# Earn XP & Message count
|
# Earn XP & Message count
|
||||||
stats.sentMessage(message)
|
stats.sentMessage(message)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@ from functions.database import memes, githubs, twitch, dadjoke
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from functions.database.custom_commands import is_name_free, add_command, add_alias
|
|
||||||
|
|
||||||
|
|
||||||
class ModCommands(commands.Cog):
|
class ModCommands(commands.Cog):
|
||||||
|
|
||||||
|
|
@ -108,35 +106,13 @@ class ModCommands(commands.Cog):
|
||||||
return await ctx.send("Ik kan geen bericht zien met dit Id.")
|
return await ctx.send("Ik kan geen bericht zien met dit Id.")
|
||||||
await message.add_reaction(emoji)
|
await message.add_reaction(emoji)
|
||||||
|
|
||||||
|
# Adds stuff into their databases
|
||||||
@commands.group(name="Add", usage="[Category] [Args]", case_insensitive=True, invoke_without_command=False)
|
@commands.group(name="Add", usage="[Category] [Args]", case_insensitive=True, invoke_without_command=False)
|
||||||
@commands.check(checks.isMe)
|
@commands.check(checks.isMe)
|
||||||
@help.Category(category=Category.Mod)
|
@help.Category(category=Category.Mod)
|
||||||
async def add(self, ctx):
|
async def add(self, ctx):
|
||||||
"""
|
|
||||||
Commands group that adds database entries
|
|
||||||
"""
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@add.command(name="Custom", usage="[Name] [Response]")
|
|
||||||
async def custom(self, ctx, name, *, resp):
|
|
||||||
err_msg = add_command(name, resp)
|
|
||||||
|
|
||||||
# Something went wrong
|
|
||||||
if err_msg:
|
|
||||||
return await ctx.send(err_msg)
|
|
||||||
else:
|
|
||||||
await ctx.message.add_reaction("✅")
|
|
||||||
|
|
||||||
@add.command(name="Alias", usage="[Name] [Alias]")
|
|
||||||
async def add_alias(self, ctx, command, alias):
|
|
||||||
err_msg = add_alias(command, alias)
|
|
||||||
|
|
||||||
# Something went wrong
|
|
||||||
if err_msg:
|
|
||||||
return await ctx.send(err_msg)
|
|
||||||
else:
|
|
||||||
await ctx.message.add_reaction("✅")
|
|
||||||
|
|
||||||
@add.command(name="Dadjoke", aliases=["Dj", "Dad"], usage="[Joke]")
|
@add.command(name="Dadjoke", aliases=["Dj", "Dad"], usage="[Joke]")
|
||||||
async def dadjoke(self, ctx, *, joke):
|
async def dadjoke(self, ctx, *, joke):
|
||||||
dadjoke.addJoke(joke)
|
dadjoke.addJoke(joke)
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from attr import dataclass
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class CustomCommand:
|
|
||||||
"""
|
|
||||||
Class to store custom commands being triggered
|
|
||||||
"""
|
|
||||||
id: int = None
|
|
||||||
name: str = None
|
|
||||||
response: str = None
|
|
||||||
alias_used: str = None
|
|
||||||
16
databases.md
16
databases.md
|
|
@ -40,22 +40,6 @@ Used in all Currency commands (Dinks, Bank, Bitcoin, Gambling, ...)
|
||||||
9 nightly: integer, default 0 | The timestamp when the user last claimed their Nightly
|
9 nightly: integer, default 0 | The timestamp when the user last claimed their Nightly
|
||||||
10 nightly_streak: integer, default 0 | The user's current Nightly Streak
|
10 nightly_streak: integer, default 0 | The user's current Nightly Streak
|
||||||
|
|
||||||
### custom_commands
|
|
||||||
|
|
||||||
Used to store custom commands that replace Dyno.
|
|
||||||
|
|
||||||
0 id: integer, auto-increment, unique, primary key | The id of the command
|
|
||||||
1 name: text, unique | The name of the command
|
|
||||||
2 response: text | The response sent when the command is used
|
|
||||||
|
|
||||||
### custom_command_aliases
|
|
||||||
|
|
||||||
Used to store aliases for custom commands.
|
|
||||||
|
|
||||||
0 id: integer, auto-increment, unique, primary key | The id of the alias
|
|
||||||
2 command: integer | The id of the command this alias is for
|
|
||||||
3 alias: text, unique | The name of the alias
|
|
||||||
|
|
||||||
### dad_jokes
|
### dad_jokes
|
||||||
|
|
||||||
Used in fun.py - Dadjoke command.
|
Used in fun.py - Dadjoke command.
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
"8ball": "Magic 8-Ball Didier beantwoordt ja/nee vragen.",
|
"8ball": "Magic 8-Ball Didier beantwoordt ja/nee vragen.",
|
||||||
"add": "Voegt [Args] toe aan [Categorie].",
|
"add": "Voegt [Args] toe aan [Categorie].",
|
||||||
"add 8-ball": "Voegt een 8-Ball response toe aan de database.",
|
"add 8-ball": "Voegt een 8-Ball response toe aan de database.",
|
||||||
"add alias": "Voegt een alias voor custom commands toe aan de database.",
|
|
||||||
"add custom": "Voegt custom commands toe aan de database.",
|
|
||||||
"add dadjoke": "Voegt een Dadjoke toe aan de database.",
|
"add dadjoke": "Voegt een Dadjoke toe aan de database.",
|
||||||
"add github": "Voegt iemand's GitHub link toe aan de database.",
|
"add github": "Voegt iemand's GitHub link toe aan de database.",
|
||||||
"add meme": "Voegt een meme toe aan de database.",
|
"add meme": "Voegt een meme toe aan de database.",
|
||||||
|
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
||||||
from data.database_classes.custom_commands import CustomCommand
|
|
||||||
import discord
|
|
||||||
from functions.database import utils
|
|
||||||
|
|
||||||
|
|
||||||
def is_custom_command(message: discord.Message) -> CustomCommand:
|
|
||||||
"""
|
|
||||||
Check if a message triggers a custom command
|
|
||||||
These use "?" as a prefix
|
|
||||||
"""
|
|
||||||
content = message.content
|
|
||||||
# Message didn't call a custom command
|
|
||||||
if not content.startswith("?"):
|
|
||||||
return CustomCommand()
|
|
||||||
|
|
||||||
# Can't be invoked by bots to prevent spam (@RPS)
|
|
||||||
if message.author.bot:
|
|
||||||
return CustomCommand()
|
|
||||||
|
|
||||||
# Ignore capitals & spaces, strip off prefix
|
|
||||||
content = content.lower().replace(" ", "")[1:]
|
|
||||||
|
|
||||||
by_name = _find_by_name(content)
|
|
||||||
|
|
||||||
# Command was found by its name
|
|
||||||
if by_name:
|
|
||||||
return CustomCommand(*by_name)
|
|
||||||
|
|
||||||
# Check if a command exists with this alias instead
|
|
||||||
return CustomCommand(*_find_by_alias(content), alias_used=content)
|
|
||||||
|
|
||||||
|
|
||||||
def _find_by_name(message):
|
|
||||||
"""
|
|
||||||
Find a command by its name
|
|
||||||
"""
|
|
||||||
connection = utils.connect()
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
cursor.execute("SELECT * FROM custom_commands WHERE name = %s", (message,))
|
|
||||||
|
|
||||||
return cursor.fetchone()
|
|
||||||
|
|
||||||
|
|
||||||
def _find_by_alias(message):
|
|
||||||
"""
|
|
||||||
Find a command by one of its aliases
|
|
||||||
"""
|
|
||||||
connection = utils.connect()
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
cursor.execute("SELECT command FROM custom_command_aliases WHERE alias = %s", (message,))
|
|
||||||
|
|
||||||
res = cursor.fetchone()
|
|
||||||
|
|
||||||
# No command matched this alias
|
|
||||||
if not res:
|
|
||||||
return ()
|
|
||||||
|
|
||||||
cursor.execute("SELECT * FROM custom_commands WHERE id = %s", (res,))
|
|
||||||
|
|
||||||
return cursor.fetchone()
|
|
||||||
|
|
||||||
|
|
||||||
def is_name_free(name) -> bool:
|
|
||||||
"""
|
|
||||||
Check if a name is already in use by a command
|
|
||||||
Includes aliases
|
|
||||||
"""
|
|
||||||
connection = utils.connect()
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
cursor.execute("SELECT id from custom_commands WHERE name = %s", (name,))
|
|
||||||
|
|
||||||
if cursor.fetchone():
|
|
||||||
return False
|
|
||||||
|
|
||||||
cursor.execute("SELECT id FROM custom_command_aliases WHERE alias = %s", (name,))
|
|
||||||
|
|
||||||
return cursor.fetchone() is None
|
|
||||||
|
|
||||||
|
|
||||||
def _clean(inp: str):
|
|
||||||
"""
|
|
||||||
Strip markdown and other stuff out of a command name
|
|
||||||
"""
|
|
||||||
return "".join(filter(lambda x: x.isalnum(), inp))
|
|
||||||
|
|
||||||
|
|
||||||
def add_command(name: str, response: str):
|
|
||||||
"""
|
|
||||||
Add a new custom command
|
|
||||||
"""
|
|
||||||
name = _clean(name.lower())
|
|
||||||
|
|
||||||
if not is_name_free(name):
|
|
||||||
return "Er is al een commando met deze naam."
|
|
||||||
|
|
||||||
connection = utils.connect()
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
cursor.execute("INSERT INTO custom_commands(name, response) VALUES (%s, E%s)", (name, response,))
|
|
||||||
connection.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def add_alias(command: str, alias: str):
|
|
||||||
"""
|
|
||||||
Add an alias for a command
|
|
||||||
Assumes the command exists
|
|
||||||
"""
|
|
||||||
command = _clean(command.lower())
|
|
||||||
alias = _clean(alias.lower())
|
|
||||||
|
|
||||||
# Base command doesn't exist
|
|
||||||
if is_name_free(command):
|
|
||||||
return "Er is geen commando met deze naam."
|
|
||||||
|
|
||||||
# Alias already exists
|
|
||||||
if not is_name_free(alias):
|
|
||||||
return "Er is al een commando met deze naam."
|
|
||||||
|
|
||||||
# Find the id of the base command
|
|
||||||
command_id = CustomCommand(*_find_by_name(command)).id
|
|
||||||
|
|
||||||
connection = utils.connect()
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
cursor.execute("INSERT INTO custom_command_aliases(command, alias) VALUES(%s, %s)", (command_id, alias,))
|
|
||||||
connection.commit()
|
|
||||||
Loading…
Reference in New Issue