mirror of
https://github.com/Matthww/TuneBot.git
synced 2026-09-21 23:37:47 +00:00
slash command descriptions configurable by config
This commit is contained in:
+10
-17
@@ -10,15 +10,13 @@ import datetime
|
|||||||
import lavalink
|
import lavalink
|
||||||
from bot import ChristmasBot
|
from bot import ChristmasBot
|
||||||
from utils.EmbedGenerator import EmbedGenerator
|
from utils.EmbedGenerator import EmbedGenerator
|
||||||
|
from utils.classes import BaseCog
|
||||||
from utils.paginator import HelpPaginator
|
from utils.paginator import HelpPaginator
|
||||||
|
|
||||||
|
|
||||||
class InformationCog(commands.Cog, name="Information"):
|
class InformationCog(BaseCog, name="Information"):
|
||||||
def __init__(self, bot: ChristmasBot):
|
@commands.command(name="ping", aliases=["pong"])
|
||||||
self.bot = bot
|
|
||||||
|
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
@commands.command(description="PONG!", aliases=["pong"])
|
|
||||||
async def ping(self, ctx: Context):
|
async def ping(self, ctx: Context):
|
||||||
"""Test the latency"""
|
"""Test the latency"""
|
||||||
avatar = ctx.author.avatar.with_static_format("jpeg")
|
avatar = ctx.author.avatar.with_static_format("jpeg")
|
||||||
@@ -39,24 +37,18 @@ class InformationCog(commands.Cog, name="Information"):
|
|||||||
embed.set_footer(text=f"Requested by: {ctx.author}", icon_url=f"{avatar}")
|
embed.set_footer(text=f"Requested by: {ctx.author}", icon_url=f"{avatar}")
|
||||||
await msg.edit(embed=embed)
|
await msg.edit(embed=embed)
|
||||||
|
|
||||||
@commands.command(
|
@commands.command(name="invite")
|
||||||
name="invite", description="Gets the invite link!", slash_commands=True
|
|
||||||
)
|
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
async def invite(self, ctx: Context):
|
async def invite(self, ctx: Context):
|
||||||
"""Gets the invite link!"""
|
"""Gets the invite link"""
|
||||||
await EmbedGenerator.Message(
|
await EmbedGenerator.Message(
|
||||||
ctx, "Add our bot to your server:", self.bot.invite_link
|
ctx, "Add our bot to your server:", self.bot.invite_link
|
||||||
)
|
)
|
||||||
|
|
||||||
@commands.command(
|
@commands.command(name="wlinfo")
|
||||||
name="wlinfo",
|
|
||||||
description="Retrieve various Node/Server/Player information.",
|
|
||||||
slash_commands=True,
|
|
||||||
)
|
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
async def wlinfo(self, ctx: Context):
|
async def wlinfo(self, ctx: Context):
|
||||||
"""Retrieve various Node/Server/Player information."""
|
"""Retrieve various node/server/player information"""
|
||||||
player = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
player = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
||||||
node = player.node
|
node = player.node
|
||||||
|
|
||||||
@@ -79,9 +71,10 @@ class InformationCog(commands.Cog, name="Information"):
|
|||||||
await ctx.send(fmt)
|
await ctx.send(fmt)
|
||||||
|
|
||||||
from utils import database
|
from utils import database
|
||||||
|
|
||||||
database.AutoJoin.get_channels()
|
database.AutoJoin.get_channels()
|
||||||
|
|
||||||
@commands.command(name="help", aliases=["about", "info"], slash_command=True)
|
@commands.command(name="help", aliases=["about", "info"])
|
||||||
@commands.cooldown(1, 1, commands.BucketType.user)
|
@commands.cooldown(1, 1, commands.BucketType.user)
|
||||||
async def about(
|
async def about(
|
||||||
self,
|
self,
|
||||||
@@ -90,7 +83,7 @@ class InformationCog(commands.Cog, name="Information"):
|
|||||||
description="Show help for a command or category"
|
description="Show help for a command or category"
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
"""ChristmasBot command list"""
|
"""Retrieve a list of possible commands"""
|
||||||
if command:
|
if command:
|
||||||
entity = self.bot.get_cog(command) or self.bot.get_command(command)
|
entity = self.bot.get_cog(command) or self.bot.get_command(command)
|
||||||
|
|
||||||
|
|||||||
+8
-12
@@ -2,8 +2,6 @@ import asyncio
|
|||||||
import re
|
import re
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from aioredis.client import Redis
|
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.channel import TextChannel
|
from discord.channel import TextChannel
|
||||||
from discord.ext.commands.context import Context
|
from discord.ext.commands.context import Context
|
||||||
@@ -13,6 +11,7 @@ from lavalink.models import AudioTrack, DefaultPlayer
|
|||||||
|
|
||||||
from bot import ChristmasBot
|
from bot import ChristmasBot
|
||||||
from utils.EmbedGenerator import EmbedGenerator
|
from utils.EmbedGenerator import EmbedGenerator
|
||||||
|
from utils.classes import BaseCog
|
||||||
from utils.database import AutoJoin
|
from utils.database import AutoJoin
|
||||||
from context import CustomContext
|
from context import CustomContext
|
||||||
from discord import Embed
|
from discord import Embed
|
||||||
@@ -69,10 +68,7 @@ class LavalinkVoiceClient(discord.VoiceClient):
|
|||||||
self.cleanup()
|
self.cleanup()
|
||||||
|
|
||||||
|
|
||||||
class Music(commands.Cog):
|
class Music(BaseCog):
|
||||||
def __init__(self, bot: ChristmasBot):
|
|
||||||
self.bot = bot
|
|
||||||
|
|
||||||
@commands.Cog.listener()
|
@commands.Cog.listener()
|
||||||
async def on_ready(self):
|
async def on_ready(self):
|
||||||
if not hasattr(
|
if not hasattr(
|
||||||
@@ -96,7 +92,7 @@ class Music(commands.Cog):
|
|||||||
|
|
||||||
for guild_id, (voicechannel_id, textchannel_id) in redis_result.items():
|
for guild_id, (voicechannel_id, textchannel_id) in redis_result.items():
|
||||||
player = self.bot.lavalink.player_manager.create(guild_id)
|
player = self.bot.lavalink.player_manager.create(guild_id)
|
||||||
player.store('channel', textchannel_id)
|
player.store("channel", textchannel_id)
|
||||||
voice_channel = await self.bot.fetch_channel(voicechannel_id)
|
voice_channel = await self.bot.fetch_channel(voicechannel_id)
|
||||||
await voice_channel.connect(cls=LavalinkVoiceClient)
|
await voice_channel.connect(cls=LavalinkVoiceClient)
|
||||||
if not player.is_playing:
|
if not player.is_playing:
|
||||||
@@ -220,7 +216,7 @@ class Music(commands.Cog):
|
|||||||
|
|
||||||
@commands.command(name="connect", aliases=["p", "play", "join"])
|
@commands.command(name="connect", aliases=["p", "play", "join"])
|
||||||
async def play(self, ctx: CustomContext):
|
async def play(self, ctx: CustomContext):
|
||||||
"""Starts playing Christmas bangers"""
|
"""Start the radio"""
|
||||||
# Get the player for this guild from cache.
|
# Get the player for this guild from cache.
|
||||||
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
||||||
await self.fill_player_queue(player, self.bot.config["queue_buffer_size"])
|
await self.fill_player_queue(player, self.bot.config["queue_buffer_size"])
|
||||||
@@ -232,20 +228,20 @@ class Music(commands.Cog):
|
|||||||
|
|
||||||
@commands.command(name="skip", aliases=["next"])
|
@commands.command(name="skip", aliases=["next"])
|
||||||
async def skip(self, ctx: Context):
|
async def skip(self, ctx: Context):
|
||||||
"""I heard this song way too often"""
|
"""Skip the current song"""
|
||||||
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
||||||
await player.skip()
|
await player.skip()
|
||||||
await ctx.send("Skipped current song")
|
await ctx.send("Skipped current song")
|
||||||
|
|
||||||
@commands.command(name="queue")
|
@commands.command(name="queue", aliases=["q"])
|
||||||
async def queue(self, ctx: Context):
|
async def queue(self, ctx: Context):
|
||||||
"""Ghetto queue"""
|
"""Display the current radio queue"""
|
||||||
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
||||||
await EmbedGenerator.Message(ctx, "Queue:", player.queue)
|
await EmbedGenerator.Message(ctx, "Queue:", player.queue)
|
||||||
|
|
||||||
@commands.command(name="disconnect", aliases=["dc", "stop"])
|
@commands.command(name="disconnect", aliases=["dc", "stop"])
|
||||||
async def disconnect(self, ctx: Context):
|
async def disconnect(self, ctx: Context):
|
||||||
"""Disconnects ChristmasBot"""
|
"""Disconnects the radio from the channel"""
|
||||||
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
player: DefaultPlayer = self.bot.lavalink.player_manager.get(ctx.guild.id)
|
||||||
|
|
||||||
if not player.is_connected:
|
if not player.is_connected:
|
||||||
|
|||||||
+3
-2
@@ -14,11 +14,12 @@ from contextlib import redirect_stdout
|
|||||||
from discord.ext.commands.context import Context
|
from discord.ext.commands.context import Context
|
||||||
|
|
||||||
from bot import ChristmasBot
|
from bot import ChristmasBot
|
||||||
|
from utils.classes import BaseCog
|
||||||
|
|
||||||
|
|
||||||
class OwnerCog(commands.Cog):
|
class OwnerCog(BaseCog):
|
||||||
def __init__(self, bot: ChristmasBot):
|
def __init__(self, bot: ChristmasBot):
|
||||||
self.bot = bot
|
super().__init__(bot)
|
||||||
self._last_result = None
|
self._last_result = None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
+8
-7
@@ -1,18 +1,16 @@
|
|||||||
from context import CustomContext
|
from context import CustomContext
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from utils.EmbedGenerator import EmbedGenerator
|
from utils.EmbedGenerator import EmbedGenerator
|
||||||
|
from utils.classes import BaseCog
|
||||||
from utils.database import AutoJoin
|
from utils.database import AutoJoin
|
||||||
from bot import ChristmasBot
|
from bot import ChristmasBot
|
||||||
from discord.ext.commands import Context
|
|
||||||
|
|
||||||
|
|
||||||
class SettingsCog(commands.Cog, name="Settings"):
|
class SettingsCog(BaseCog, name="Settings"):
|
||||||
def __init__(self, bot: ChristmasBot):
|
|
||||||
self.bot = bot
|
|
||||||
|
|
||||||
@commands.group(aliases=["aj"], invoke_without_command=True)
|
@commands.group(aliases=["aj"], invoke_without_command=True)
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
async def autojoin(self, ctx: CustomContext):
|
async def autojoin(self, ctx: CustomContext):
|
||||||
|
"""Enable/Disable the bot automatically joining"""
|
||||||
await EmbedGenerator.Message(
|
await EmbedGenerator.Message(
|
||||||
ctx,
|
ctx,
|
||||||
"Autojoin",
|
"Autojoin",
|
||||||
@@ -23,16 +21,19 @@ class SettingsCog(commands.Cog, name="Settings"):
|
|||||||
@commands.has_permissions(manage_channels=True)
|
@commands.has_permissions(manage_channels=True)
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
async def autojoin_set(self, ctx: CustomContext):
|
async def autojoin_set(self, ctx: CustomContext):
|
||||||
|
"""Enable the bot automatically joining"""
|
||||||
voicechannel_id = ctx.author.voice.channel.id
|
voicechannel_id = ctx.author.voice.channel.id
|
||||||
textchannel_id = ctx.message.channel.id
|
textchannel_id = ctx.message.channel.id
|
||||||
await AutoJoin.update_channel(ctx.get_redis(), ctx.guild.id, voicechannel_id, textchannel_id)
|
await AutoJoin.update_channel(
|
||||||
|
ctx.get_redis(), ctx.guild.id, voicechannel_id, textchannel_id
|
||||||
|
)
|
||||||
await EmbedGenerator.Message(ctx, "Autojoin", "`enabled`")
|
await EmbedGenerator.Message(ctx, "Autojoin", "`enabled`")
|
||||||
|
|
||||||
@autojoin.command(name="disable")
|
@autojoin.command(name="disable")
|
||||||
@commands.has_permissions(manage_channels=True)
|
@commands.has_permissions(manage_channels=True)
|
||||||
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
@commands.cooldown(rate=1, per=5, type=commands.BucketType.user)
|
||||||
async def autojoin_del(self, ctx: CustomContext):
|
async def autojoin_del(self, ctx: CustomContext):
|
||||||
vc = ctx.author.voice.channel
|
"""Disable the bot automatically joining"""
|
||||||
await AutoJoin.del_channel(ctx.get_redis(), ctx.guild.id)
|
await AutoJoin.del_channel(ctx.get_redis(), ctx.guild.id)
|
||||||
await EmbedGenerator.Message(ctx, "Autojoin", "`disabled`")
|
await EmbedGenerator.Message(ctx, "Autojoin", "`disabled`")
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -19,5 +19,6 @@
|
|||||||
},
|
},
|
||||||
"cogs": ["cogs.owner", "cogs.settings", "cogs.information", "cogs.music"],
|
"cogs": ["cogs.owner", "cogs.settings", "cogs.information", "cogs.music"],
|
||||||
"slash_command_guilds": [],
|
"slash_command_guilds": [],
|
||||||
"queue_buffer_size": 5
|
"queue_buffer_size": 5,
|
||||||
|
"slash_descriptions": {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
from typing import Dict
|
||||||
|
from discord.ext.commands import Cog
|
||||||
|
from bot import ChristmasBot
|
||||||
|
|
||||||
|
|
||||||
|
class BaseCog(Cog):
|
||||||
|
def __init__(self, bot: ChristmasBot) -> None:
|
||||||
|
self.bot = bot
|
||||||
|
|
||||||
|
slash_descriptions: Dict[str, str] = self.bot.config["slash_descriptions"]
|
||||||
|
for command in self.walk_commands():
|
||||||
|
if brief := slash_descriptions.get(command.qualified_name):
|
||||||
|
command.brief = brief
|
||||||
Reference in New Issue
Block a user