2023-03-30 17:03:17 +00:00
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
import discord
|
|
|
|
from discord.ext import commands
|
|
|
|
from discord.ext.commands import Cog, Context, BucketType
|
|
|
|
|
|
|
|
from robocop_ng.helpers.checks import check_if_staff
|
2023-04-01 16:43:56 +00:00
|
|
|
from robocop_ng.helpers.macros import (
|
|
|
|
get_macro,
|
|
|
|
add_macro,
|
|
|
|
edit_macro,
|
|
|
|
remove_macro,
|
|
|
|
get_macros,
|
|
|
|
)
|
2023-03-30 17:03:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Macro(Cog):
|
|
|
|
@commands.cooldown(3, 30, BucketType.member)
|
|
|
|
@commands.command(aliases=["m"])
|
|
|
|
async def macro(self, ctx: Context, target: Optional[discord.Member], key: str):
|
|
|
|
if len(key) > 0:
|
|
|
|
text = get_macro(key)
|
|
|
|
if text is not None:
|
|
|
|
if target is not None:
|
|
|
|
await ctx.send(f"{target.mention}:\n{text}")
|
|
|
|
else:
|
|
|
|
await ctx.send(text)
|
|
|
|
else:
|
2023-04-01 16:43:56 +00:00
|
|
|
await ctx.send(
|
|
|
|
f"{ctx.author.mention}: The macro '{key}' doesn't exist."
|
|
|
|
)
|
2023-03-30 17:03:17 +00:00
|
|
|
|
|
|
|
@commands.check(check_if_staff)
|
|
|
|
@commands.command(name="macroadd", aliases=["ma", "addmacro", "add_macro"])
|
|
|
|
async def add_macro(self, ctx: Context, key: str, *, text: str):
|
|
|
|
if add_macro(key, text):
|
|
|
|
await ctx.send(f"Macro '{key}' added!")
|
|
|
|
else:
|
|
|
|
await ctx.send(f"Error: Macro '{key}' already exists.")
|
|
|
|
|
|
|
|
@commands.check(check_if_staff)
|
|
|
|
@commands.command(name="macroedit", aliases=["me", "editmacro", "edit_macro"])
|
|
|
|
async def edit_macro(self, ctx: Context, key: str, *, text: str):
|
|
|
|
if edit_macro(key, text):
|
|
|
|
await ctx.send(f"Macro '{key}' edited!")
|
|
|
|
else:
|
|
|
|
await ctx.send(f"Error: Macro '{key}' not found.")
|
|
|
|
|
|
|
|
@commands.check(check_if_staff)
|
2023-04-01 16:43:56 +00:00
|
|
|
@commands.command(
|
|
|
|
name="macroremove",
|
|
|
|
aliases=[
|
|
|
|
"mr",
|
|
|
|
"md",
|
|
|
|
"removemacro",
|
|
|
|
"remove_macro",
|
|
|
|
"macrodel",
|
|
|
|
"delmacro",
|
|
|
|
"delete_macro",
|
|
|
|
],
|
|
|
|
)
|
2023-03-30 17:03:17 +00:00
|
|
|
async def remove_macro(self, ctx: Context, key: str):
|
|
|
|
if remove_macro(key):
|
|
|
|
await ctx.send(f"Macro '{key}' removed!")
|
|
|
|
else:
|
|
|
|
await ctx.send(f"Error: Macro '{key}' not found.")
|
|
|
|
|
|
|
|
@commands.cooldown(3, 30, BucketType.channel)
|
|
|
|
@commands.command(name="macros", aliases=["ml", "listmacros", "list_macros"])
|
|
|
|
async def list_macros(self, ctx: Context):
|
|
|
|
macros = get_macros()
|
|
|
|
if len(macros) > 0:
|
2023-03-30 18:38:03 +00:00
|
|
|
macros = [f"- {key}\n" for key in sorted(macros.keys())]
|
|
|
|
message = "📝 **Macros**:\n"
|
|
|
|
for macro_key in macros:
|
|
|
|
message += macro_key
|
|
|
|
await ctx.send(message)
|
2023-03-30 17:03:17 +00:00
|
|
|
else:
|
|
|
|
await ctx.send("Couldn't find any macros.")
|
|
|
|
|
|
|
|
|
|
|
|
async def setup(bot):
|
|
|
|
await bot.add_cog(Macro(bot))
|