mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-08 20:28:55 -05:00
[Audio] Update equalizer permissions (#2813)
* [Audio] Update equalizer permissions * Reformat header on eq list for i18n * Style
This commit is contained in:
parent
f83f378528
commit
be184b57dd
@ -840,44 +840,63 @@ class Audio(commands.Cog):
|
|||||||
@commands.guild_only()
|
@commands.guild_only()
|
||||||
@commands.cooldown(1, 15, discord.ext.commands.BucketType.guild)
|
@commands.cooldown(1, 15, discord.ext.commands.BucketType.guild)
|
||||||
@commands.bot_has_permissions(embed_links=True, add_reactions=True)
|
@commands.bot_has_permissions(embed_links=True, add_reactions=True)
|
||||||
@checks.mod_or_permissions(administrator=True)
|
|
||||||
async def eq(self, ctx):
|
async def eq(self, ctx):
|
||||||
"""Equalizer management."""
|
"""Equalizer management."""
|
||||||
if not self._player_check(ctx):
|
if not self._player_check(ctx):
|
||||||
return await self._embed_msg(ctx, _("Nothing playing."))
|
return await self._embed_msg(ctx, _("Nothing playing."))
|
||||||
|
dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
eq = player.fetch("eq", Equalizer())
|
eq = player.fetch("eq", Equalizer())
|
||||||
reactions = ["◀", "⬅", "⏫", "🔼", "🔽", "⏬", "➡", "▶", "⏺", "ℹ"]
|
reactions = ["◀", "⬅", "⏫", "🔼", "🔽", "⏬", "➡", "▶", "⏺", "ℹ"]
|
||||||
await self._eq_msg_clear(player.fetch("eq_message"))
|
await self._eq_msg_clear(player.fetch("eq_message"))
|
||||||
eq_message = await ctx.send(box(eq.visualise(), lang="ini"))
|
eq_message = await ctx.send(box(eq.visualise(), lang="ini"))
|
||||||
player.store("eq_message", eq_message)
|
|
||||||
|
|
||||||
for reaction in reactions:
|
if dj_enabled and not await self._can_instaskip(ctx, ctx.author):
|
||||||
try:
|
try:
|
||||||
await eq_message.add_reaction(reaction)
|
await eq_message.add_reaction("ℹ")
|
||||||
except discord.errors.NotFound:
|
except discord.errors.NotFound:
|
||||||
pass
|
pass
|
||||||
|
else:
|
||||||
|
for reaction in reactions:
|
||||||
|
try:
|
||||||
|
await eq_message.add_reaction(reaction)
|
||||||
|
except discord.errors.NotFound:
|
||||||
|
pass
|
||||||
|
|
||||||
await self._eq_interact(ctx, player, eq, eq_message, 0)
|
eq_msg_with_reacts = await ctx.fetch_message(eq_message.id)
|
||||||
|
player.store("eq_message", eq_msg_with_reacts)
|
||||||
|
await self._eq_interact(ctx, player, eq, eq_msg_with_reacts, 0)
|
||||||
|
|
||||||
@eq.command(name="delete")
|
@eq.command(name="delete")
|
||||||
async def _eq_delete(self, ctx, eq_preset: str):
|
async def _eq_delete(self, ctx, eq_preset: str):
|
||||||
"""Delete a saved eq preset."""
|
"""Delete a saved eq preset."""
|
||||||
eq_presets = await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets()
|
async with self.config.custom("EQUALIZER", ctx.guild.id).eq_presets() as eq_presets:
|
||||||
eq_preset = eq_preset.lower()
|
eq_preset = eq_preset.lower()
|
||||||
try:
|
try:
|
||||||
del eq_presets[eq_preset]
|
if eq_presets[eq_preset][
|
||||||
except KeyError:
|
"author"
|
||||||
return await self._embed_msg(
|
] != ctx.author.id and not await self._can_instaskip(ctx, ctx.author):
|
||||||
ctx,
|
return await self._embed_msg(
|
||||||
_(
|
ctx, _("You are not the author of that preset setting.")
|
||||||
"{eq_preset} is not in the eq preset list.".format(
|
)
|
||||||
eq_preset=eq_preset.capitalize()
|
del eq_presets[eq_preset]
|
||||||
|
except KeyError:
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx,
|
||||||
|
_(
|
||||||
|
"{eq_preset} is not in the eq preset list.".format(
|
||||||
|
eq_preset=eq_preset.capitalize()
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
except TypeError:
|
||||||
|
if await self._can_instaskip(ctx, ctx.author):
|
||||||
|
del eq_presets[eq_preset]
|
||||||
|
else:
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You are not the author of that preset setting.")
|
||||||
)
|
)
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets.set(eq_presets)
|
|
||||||
await self._embed_msg(
|
await self._embed_msg(
|
||||||
ctx, _("The {preset_name} preset was deleted.".format(preset_name=eq_preset))
|
ctx, _("The {preset_name} preset was deleted.".format(preset_name=eq_preset))
|
||||||
)
|
)
|
||||||
@ -888,14 +907,36 @@ class Audio(commands.Cog):
|
|||||||
eq_presets = await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets()
|
eq_presets = await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets()
|
||||||
if not eq_presets.keys():
|
if not eq_presets.keys():
|
||||||
return await self._embed_msg(ctx, _("No saved equalizer presets."))
|
return await self._embed_msg(ctx, _("No saved equalizer presets."))
|
||||||
eq_list = "\n".join(list(sorted(eq_presets.keys())))
|
|
||||||
|
space = "\N{EN SPACE}"
|
||||||
|
header_name = _("Preset Name")
|
||||||
|
header_author = _("Author")
|
||||||
|
header = box(
|
||||||
|
"[{header_name}]{space}[{header_author}]\n".format(
|
||||||
|
header_name=header_name, space=space * 9, header_author=header_author
|
||||||
|
),
|
||||||
|
lang="ini",
|
||||||
|
)
|
||||||
|
preset_list = ""
|
||||||
|
for preset, bands in eq_presets.items():
|
||||||
|
try:
|
||||||
|
bands["author"]
|
||||||
|
author = self.bot.get_user(bands["author"])
|
||||||
|
except TypeError:
|
||||||
|
author = "None"
|
||||||
|
msg = f"{preset}{space*(22 - len(preset))}{author}\n"
|
||||||
|
preset_list += msg
|
||||||
|
|
||||||
page_list = []
|
page_list = []
|
||||||
for page in pagify(eq_list, delims=[", "], page_length=1000):
|
for page in pagify(preset_list, delims=[", "], page_length=1000):
|
||||||
|
formatted_page = box(page, lang="ini")
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=await ctx.embed_colour(), title="Equalizer presets:", description=page
|
colour=await ctx.embed_colour(), description=(f"{header}\n{formatted_page}")
|
||||||
)
|
)
|
||||||
embed.set_footer(text=_("{num} preset(s)").format(num=len(list(eq_presets.keys()))))
|
embed.set_footer(text=_("{num} preset(s)").format(num=len(list(eq_presets.keys()))))
|
||||||
page_list.append(embed)
|
page_list.append(embed)
|
||||||
|
if len(page_list) == 1:
|
||||||
|
return await ctx.send(embed=page_list[0])
|
||||||
await menu(ctx, page_list, DEFAULT_CONTROLS)
|
await menu(ctx, page_list, DEFAULT_CONTROLS)
|
||||||
|
|
||||||
@eq.command(name="load")
|
@eq.command(name="load")
|
||||||
@ -904,15 +945,26 @@ class Audio(commands.Cog):
|
|||||||
eq_preset = eq_preset.lower()
|
eq_preset = eq_preset.lower()
|
||||||
eq_presets = await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets()
|
eq_presets = await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets()
|
||||||
try:
|
try:
|
||||||
eq_values = eq_presets[eq_preset]
|
eq_values = eq_presets[eq_preset]["bands"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return await self._embed_msg(
|
return await self._embed_msg(
|
||||||
ctx, _("No preset named {eq_preset}.".format(eq_preset=eq_preset))
|
ctx, _("No preset named {eq_preset}.".format(eq_preset=eq_preset))
|
||||||
)
|
)
|
||||||
await self.config.custom("EQUALIZER", ctx.guild.id).eq_bands.set(eq_values)
|
except TypeError:
|
||||||
|
eq_values = eq_presets[eq_preset]
|
||||||
|
|
||||||
if not self._player_check(ctx):
|
if not self._player_check(ctx):
|
||||||
return await self._embed_msg(ctx, _("Nothing playing."))
|
return await self._embed_msg(ctx, _("Nothing playing."))
|
||||||
|
|
||||||
|
dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
|
if dj_enabled:
|
||||||
|
if not await self._can_instaskip(ctx, ctx.author):
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You need the DJ role to load equalizer presets.")
|
||||||
|
)
|
||||||
|
|
||||||
|
await self.config.custom("EQUALIZER", ctx.guild.id).eq_bands.set(eq_values)
|
||||||
await self._eq_check(ctx, player)
|
await self._eq_check(ctx, player)
|
||||||
eq = player.fetch("eq", Equalizer())
|
eq = player.fetch("eq", Equalizer())
|
||||||
await self._eq_msg_clear(player.fetch("eq_message"))
|
await self._eq_msg_clear(player.fetch("eq_message"))
|
||||||
@ -930,6 +982,12 @@ class Audio(commands.Cog):
|
|||||||
"""Reset the eq to 0 across all bands."""
|
"""Reset the eq to 0 across all bands."""
|
||||||
if not self._player_check(ctx):
|
if not self._player_check(ctx):
|
||||||
return await self._embed_msg(ctx, _("Nothing playing."))
|
return await self._embed_msg(ctx, _("Nothing playing."))
|
||||||
|
dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
|
||||||
|
if dj_enabled:
|
||||||
|
if not await self._can_instaskip(ctx, ctx.author):
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You need the DJ role to reset the equalizer.")
|
||||||
|
)
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
eq = player.fetch("eq", Equalizer())
|
eq = player.fetch("eq", Equalizer())
|
||||||
|
|
||||||
@ -954,18 +1012,20 @@ class Audio(commands.Cog):
|
|||||||
"""Save the current eq settings to a preset."""
|
"""Save the current eq settings to a preset."""
|
||||||
if not self._player_check(ctx):
|
if not self._player_check(ctx):
|
||||||
return await self._embed_msg(ctx, _("Nothing playing."))
|
return await self._embed_msg(ctx, _("Nothing playing."))
|
||||||
|
dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
|
||||||
|
if dj_enabled:
|
||||||
|
if not await self._can_instaskip(ctx, ctx.author):
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You need the DJ role to save equalizer presets.")
|
||||||
|
)
|
||||||
if not eq_preset:
|
if not eq_preset:
|
||||||
await self._embed_msg(ctx, _("Please enter a name for this equalizer preset."))
|
await self._embed_msg(ctx, _("Please enter a name for this equalizer preset."))
|
||||||
try:
|
try:
|
||||||
|
eq_name_msg = await ctx.bot.wait_for(
|
||||||
def pred(m):
|
"message",
|
||||||
return (
|
timeout=15.0,
|
||||||
m.channel == ctx.channel
|
check=MessagePredicate.regex(fr"^(?!{re.escape(ctx.prefix)})", ctx),
|
||||||
and m.author == ctx.author
|
)
|
||||||
and not m.content.startswith(ctx.prefix)
|
|
||||||
)
|
|
||||||
|
|
||||||
eq_name_msg = await ctx.bot.wait_for("message", timeout=15.0, check=pred)
|
|
||||||
eq_preset = eq_name_msg.content.split(" ")[0].strip('"').lower()
|
eq_preset = eq_name_msg.content.split(" ")[0].strip('"').lower()
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
return await self._embed_msg(
|
return await self._embed_msg(
|
||||||
@ -997,7 +1057,7 @@ class Audio(commands.Cog):
|
|||||||
|
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
eq = player.fetch("eq", Equalizer())
|
eq = player.fetch("eq", Equalizer())
|
||||||
to_append = {eq_preset: eq.bands}
|
to_append = {eq_preset: {"author": ctx.author.id, "bands": eq.bands}}
|
||||||
new_eq_presets = {**eq_presets, **to_append}
|
new_eq_presets = {**eq_presets, **to_append}
|
||||||
await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets.set(new_eq_presets)
|
await self.config.custom("EQUALIZER", ctx.guild.id).eq_presets.set(new_eq_presets)
|
||||||
embed3 = discord.Embed(
|
embed3 = discord.Embed(
|
||||||
@ -1024,6 +1084,14 @@ class Audio(commands.Cog):
|
|||||||
"""
|
"""
|
||||||
if not self._player_check(ctx):
|
if not self._player_check(ctx):
|
||||||
return await self._embed_msg(ctx, _("Nothing playing."))
|
return await self._embed_msg(ctx, _("Nothing playing."))
|
||||||
|
|
||||||
|
dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
|
||||||
|
if dj_enabled:
|
||||||
|
if not await self._can_instaskip(ctx, ctx.author):
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You need the DJ role to set equalizer presets.")
|
||||||
|
)
|
||||||
|
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
band_names = [
|
band_names = [
|
||||||
"25",
|
"25",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user