Add a toggle for auto deafen

This commit is contained in:
Drapersniper
2020-09-25 17:12:24 +01:00
parent 8e70b4cd59
commit 124a72f9f8
3 changed files with 24 additions and 1 deletions

View File

@@ -98,6 +98,7 @@ class Audio(
default_guild = dict( default_guild = dict(
auto_play=False, auto_play=False,
auto_deafen=True,
autoplaylist={"enabled": False, "id": None, "name": None, "scope": None}, autoplaylist={"enabled": False, "id": None, "name": None, "scope": None},
persist_queue=True, persist_queue=True,
disconnect=False, disconnect=False,

View File

@@ -889,6 +889,21 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
), ),
) )
@command_audioset.command(name="autodeafen")
@commands.guild_only()
@commands.mod_or_permissions(manage_guild=True)
async def command_audioset_auto_deafen(self, ctx: commands.Context):
"""Toggle whether the bot will be auto deafened upon joining the voice channel."""
auto_deafen = await self.config.guild(ctx.guild).auto_deafen()
await self.config.guild(ctx.guild).auto_deafen.set(not auto_deafen)
await self.send_embed_msg(
ctx,
title=_("Setting Changed"),
description=_("Auto Deafen: {true_or_false}.").format(
true_or_false=_("Enabled") if not auto_deafen else _("Disabled")
),
)
@command_audioset.command(name="restrict") @command_audioset.command(name="restrict")
@commands.is_owner() @commands.is_owner()
@commands.guild_only() @commands.guild_only()
@@ -953,6 +968,7 @@ 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"]
@@ -997,6 +1013,7 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
"Songs as status: [{status}]\n" "Songs as status: [{status}]\n"
"Persist queue: [{persist_queue}]\n" "Persist queue: [{persist_queue}]\n"
"Spotify search: [{countrycode}]\n" "Spotify search: [{countrycode}]\n"
"Auto-Deafen: [{countrycode}]\n"
).format( ).format(
countrycode=countrycode, countrycode=countrycode,
repeat=song_repeat, repeat=song_repeat,
@@ -1005,6 +1022,7 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
status=song_status, status=song_status,
bumpped_shuffle=bumpped_shuffle, bumpped_shuffle=bumpped_shuffle,
persist_queue=persist_queue, persist_queue=persist_queue,
auto_deafen=auto_deafen,
) )
if thumbnail: if thumbnail:
msg += _("Thumbnails: [{0}]\n").format( msg += _("Thumbnails: [{0}]\n").format(

View File

@@ -210,7 +210,11 @@ class PlayerUtilities(MixinMeta, metaclass=CompositeMetaClass):
return False return False
async def self_deafen(self, player: lavalink.Player) -> None: async def self_deafen(self, player: lavalink.Player) -> None:
guild_id = player.channel.guild.id guild_id = self.rgetattr(player, "channel.guild.id", None)
if not guild_id:
return
if not self.config.guild_from_id(guild_id).auto_deafen():
return
channel_id = player.channel.id channel_id = player.channel.id
node = player.manager.node node = player.manager.node
voice_ws = node.get_voice_ws(guild_id) voice_ws = node.get_voice_ws(guild_id)