mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
Add a per guild max volume setting (#5165)
* Oh great... someone touched Audio again. * How did that get in there? * Style? Style.
This commit is contained in:
parent
2b67b9d06d
commit
e154a630df
@ -132,6 +132,7 @@ class Audio(
|
|||||||
jukebox=False,
|
jukebox=False,
|
||||||
jukebox_price=0,
|
jukebox_price=0,
|
||||||
maxlength=0,
|
maxlength=0,
|
||||||
|
max_volume=150,
|
||||||
notify=False,
|
notify=False,
|
||||||
prefer_lyrics=False,
|
prefer_lyrics=False,
|
||||||
repeat=False,
|
repeat=False,
|
||||||
|
|||||||
@ -960,6 +960,8 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
is_owner = await self.bot.is_owner(ctx.author)
|
is_owner = await self.bot.is_owner(ctx.author)
|
||||||
global_data = await self.config.all()
|
global_data = await self.config.all()
|
||||||
data = await self.config.guild(ctx.guild).all()
|
data = await self.config.guild(ctx.guild).all()
|
||||||
|
|
||||||
|
auto_deafen = _("Enabled") if data["auto_deafen"] else _("Disabled")
|
||||||
dj_role_obj = ctx.guild.get_role(data["dj_role"])
|
dj_role_obj = ctx.guild.get_role(data["dj_role"])
|
||||||
dj_enabled = data["dj_enabled"]
|
dj_enabled = data["dj_enabled"]
|
||||||
emptydc_enabled = data["emptydc_enabled"]
|
emptydc_enabled = data["emptydc_enabled"]
|
||||||
@ -972,6 +974,7 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
dc = data["disconnect"]
|
dc = data["disconnect"]
|
||||||
autoplay = data["auto_play"]
|
autoplay = data["auto_play"]
|
||||||
maxlength = data["maxlength"]
|
maxlength = data["maxlength"]
|
||||||
|
maxvolume = data["max_volume"]
|
||||||
vote_percent = data["vote_percent"]
|
vote_percent = data["vote_percent"]
|
||||||
current_level = CacheLevel(global_data["cache_level"])
|
current_level = CacheLevel(global_data["cache_level"])
|
||||||
song_repeat = _("Enabled") if data["repeat"] else _("Disabled")
|
song_repeat = _("Enabled") if data["repeat"] else _("Disabled")
|
||||||
@ -980,7 +983,6 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
song_notify = _("Enabled") if data["notify"] else _("Disabled")
|
song_notify = _("Enabled") if data["notify"] else _("Disabled")
|
||||||
song_status = _("Enabled") if global_data["status"] else _("Disabled")
|
song_status = _("Enabled") if global_data["status"] else _("Disabled")
|
||||||
persist_queue = _("Enabled") if data["persist_queue"] else _("Disabled")
|
persist_queue = _("Enabled") if data["persist_queue"] else _("Disabled")
|
||||||
auto_deafen = _("Enabled") if data["auto_deafen"] else _("Disabled")
|
|
||||||
|
|
||||||
countrycode = data["country_code"]
|
countrycode = data["country_code"]
|
||||||
|
|
||||||
@ -994,6 +996,9 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
autoplaylist = data["autoplaylist"]
|
autoplaylist = data["autoplaylist"]
|
||||||
vote_enabled = data["vote_enabled"]
|
vote_enabled = data["vote_enabled"]
|
||||||
msg = "----" + _("Server Settings") + "---- \n"
|
msg = "----" + _("Server Settings") + "---- \n"
|
||||||
|
msg += _("Auto-deafen: [{auto_deafen}]\n").format(
|
||||||
|
auto_deafen=auto_deafen,
|
||||||
|
)
|
||||||
msg += _("Auto-disconnect: [{dc}]\n").format(dc=_("Enabled") if dc else _("Disabled"))
|
msg += _("Auto-disconnect: [{dc}]\n").format(dc=_("Enabled") if dc else _("Disabled"))
|
||||||
msg += _("Auto-play: [{autoplay}]\n").format(
|
msg += _("Auto-play: [{autoplay}]\n").format(
|
||||||
autoplay=_("Enabled") if autoplay else _("Disabled")
|
autoplay=_("Enabled") if autoplay else _("Disabled")
|
||||||
@ -1018,23 +1023,23 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
tracklength=self.get_time_string(maxlength)
|
tracklength=self.get_time_string(maxlength)
|
||||||
)
|
)
|
||||||
msg += _(
|
msg += _(
|
||||||
|
"Max volume: [{max_volume}%]\n"
|
||||||
|
"Persist queue: [{persist_queue}]\n"
|
||||||
"Repeat: [{repeat}]\n"
|
"Repeat: [{repeat}]\n"
|
||||||
"Shuffle: [{shuffle}]\n"
|
"Shuffle: [{shuffle}]\n"
|
||||||
"Shuffle bumped: [{bumpped_shuffle}]\n"
|
"Shuffle bumped: [{bumpped_shuffle}]\n"
|
||||||
"Song notify msgs: [{notify}]\n"
|
"Song notify msgs: [{notify}]\n"
|
||||||
"Songs as status: [{status}]\n"
|
"Songs as status: [{status}]\n"
|
||||||
"Persist queue: [{persist_queue}]\n"
|
|
||||||
"Spotify search: [{countrycode}]\n"
|
"Spotify search: [{countrycode}]\n"
|
||||||
"Auto-Deafen: [{auto_deafen}]\n"
|
|
||||||
).format(
|
).format(
|
||||||
|
max_volume=maxvolume,
|
||||||
countrycode=countrycode,
|
countrycode=countrycode,
|
||||||
|
persist_queue=persist_queue,
|
||||||
repeat=song_repeat,
|
repeat=song_repeat,
|
||||||
shuffle=song_shuffle,
|
shuffle=song_shuffle,
|
||||||
notify=song_notify,
|
notify=song_notify,
|
||||||
status=song_status,
|
status=song_status,
|
||||||
bumpped_shuffle=bumpped_shuffle,
|
bumpped_shuffle=bumpped_shuffle,
|
||||||
persist_queue=persist_queue,
|
|
||||||
auto_deafen=auto_deafen,
|
|
||||||
)
|
)
|
||||||
if thumbnail:
|
if thumbnail:
|
||||||
msg += _("Thumbnails: [{0}]\n").format(
|
msg += _("Thumbnails: [{0}]\n").format(
|
||||||
@ -1454,3 +1459,43 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
title=_("Restarting Lavalink"),
|
title=_("Restarting Lavalink"),
|
||||||
description=_("It can take a couple of minutes for Lavalink to fully start up."),
|
description=_("It can take a couple of minutes for Lavalink to fully start up."),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@command_audioset.command(usage="<maximum volume>", name="maxvolume")
|
||||||
|
@commands.guild_only()
|
||||||
|
@commands.admin_or_permissions(manage_roles=True)
|
||||||
|
async def command_audioset_maxvolume(self, ctx: commands.Context, max_volume: int):
|
||||||
|
"""Set the maximum volume allowed in this server."""
|
||||||
|
if max_volume < 1:
|
||||||
|
return await self.send_embed_msg(
|
||||||
|
ctx,
|
||||||
|
title=_("Error"),
|
||||||
|
description=_(
|
||||||
|
"Music without sound isn't music at all. Try setting the volume higher then 0%."
|
||||||
|
),
|
||||||
|
)
|
||||||
|
elif max_volume > 150:
|
||||||
|
max_volume = 150
|
||||||
|
await self.send_embed_msg(
|
||||||
|
ctx,
|
||||||
|
title=_("Setting changed"),
|
||||||
|
description=_(
|
||||||
|
"The maximum volume has been limited to 150%, be easy on your ears."
|
||||||
|
),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
await self.send_embed_msg(
|
||||||
|
ctx,
|
||||||
|
title=_("Setting changed"),
|
||||||
|
description=_("The maximum volume has been limited to {max_volume}%.").format(
|
||||||
|
max_volume=max_volume
|
||||||
|
),
|
||||||
|
)
|
||||||
|
current_volume = await self.config.guild(ctx.guild).volume()
|
||||||
|
if current_volume > max_volume:
|
||||||
|
await self.config.guild(ctx.guild).volume.set(max_volume)
|
||||||
|
if self._player_check(ctx):
|
||||||
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
|
await player.set_volume(max_volume)
|
||||||
|
player.store("notify_channel", ctx.channel.id)
|
||||||
|
|
||||||
|
await self.config.guild(ctx.guild).max_volume.set(max_volume)
|
||||||
|
|||||||
@ -701,6 +701,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
|
ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
|
||||||
)
|
)
|
||||||
can_skip = await self._can_instaskip(ctx, ctx.author)
|
can_skip = await self._can_instaskip(ctx, ctx.author)
|
||||||
|
max_volume = await self.config.guild(ctx.guild).max_volume()
|
||||||
|
|
||||||
if not vol:
|
if not vol:
|
||||||
vol = await self.config.guild(ctx.guild).volume()
|
vol = await self.config.guild(ctx.guild).volume()
|
||||||
embed = discord.Embed(title=_("Current Volume:"), description=f"{vol}%")
|
embed = discord.Embed(title=_("Current Volume:"), description=f"{vol}%")
|
||||||
@ -725,7 +727,7 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
|
|||||||
description=_("You need the DJ role to change the volume."),
|
description=_("You need the DJ role to change the volume."),
|
||||||
)
|
)
|
||||||
|
|
||||||
vol = max(0, min(vol, 150))
|
vol = max(0, min(vol, max_volume))
|
||||||
await self.config.guild(ctx.guild).volume.set(vol)
|
await self.config.guild(ctx.guild).volume.set(vol)
|
||||||
if self._player_check(ctx):
|
if self._player_check(ctx):
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user