Add VolumeUp, VolumeDown and VolumeMute control buttons

This commit is contained in:
Choco
2023-02-21 10:04:53 +08:00
parent 78cf29b8ff
commit 3522aeacb6
6 changed files with 83 additions and 0 deletions

View File

@@ -117,6 +117,10 @@
"buttonSkip": "跳過",
"buttonLeave": "離開",
"buttonLoop": "重複",
"buttonVolumeUp": "提高音量",
"buttonVolumeDown": "減小音量",
"buttonVolumeMute": "靜音",
"buttonVolumeUnmute": "取消靜音",
"nowplayingDesc": "**現在播放:**\n```{0}```",
"nowplayingField": "接下來:",

View File

@@ -117,6 +117,10 @@
"buttonSkip": "Überspringen",
"buttonLeave": "Verlassen",
"buttonLoop": "wiederholen",
"buttonVolumeUp": "Lauter",
"buttonVolumeDown": "Lautstärke runter",
"buttonVolumeMute": "Stumm",
"buttonVolumeUnmute": "Stummschaltung aufheben",
"nowplayingDesc": "**Läuft gerade:**\n```{0}```",
"nowplayingField": "Als nächstes:",

View File

@@ -117,6 +117,10 @@
"buttonSkip": "Skip",
"buttonLeave": "Leave",
"buttonLoop": "Loop",
"buttonVolumeUp": "Volume Up",
"buttonVolumeDown": "Volume Down",
"buttonVolumeMute": "Mute",
"buttonVolumeUnmute": "Unmute",
"nowplayingDesc": "**Now Playing:**\n```{0}```",
"nowplayingField": "Up Next:",

View File

@@ -117,6 +117,10 @@
"buttonSkip": "スキップ",
"buttonLeave": "離れる",
"buttonLoop": "繰り返す",
"buttonVolumeUp": "ボリュームアップ",
"buttonVolumeDown": "ボリュームダウン",
"buttonVolumeMute": "無音",
"buttonVolumeUnmute": "ミュート解除",
"nowplayingDesc": "**再生中:**\n```{0}```",
"nowplayingField": "次に:",

View File

@@ -117,6 +117,10 @@
"buttonSkip": "거르다",
"buttonLeave": "떠나다",
"buttonLoop": "반복하다",
"buttonVolumeUp": "볼륨 업",
"buttonVolumeDown": "볼륨 낮추기",
"buttonVolumeMute": "무음",
"buttonVolumeUnmute": "음소거 해제",
"nowplayingDesc": "**지금 재생 중:**\n```{0}```",
"nowplayingField": "다음으로:",

View File

@@ -204,6 +204,64 @@ class Loop(discord.ui.Button):
self.player.queue.set_repeat(mode)
await interaction.response.send_message(self.player.get_msg('repeat').format(mode.capitalize()))
class VolumeUp(discord.ui.Button):
def __init__(self, player, style, row):
self.player = player
super().__init__(emoji="🔊", label=player.get_msg('buttonVolumeUp'), style=style, row=row)
async def callback(self, interaction: discord.Interaction):
if not await self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
if not self.player.node._available:
return await interaction.response.send_message(self.player.get_msg("nodeReconnect"))
value = value if (value := self.player.volume + 20) <= 150 else 150
await self.player.set_volume(value)
await interaction.response.send_message(self.player.get_msg('setVolume').format(value), ephemeral=True)
class VolumeDown(discord.ui.Button):
def __init__(self, player, style, row):
self.player = player
super().__init__(emoji="🔉", label=player.get_msg('buttonVolumeDown'), style=style, row=row)
async def callback(self, interaction: discord.Interaction):
if not await self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
if not self.player.node._available:
return await interaction.response.send_message(self.player.get_msg("nodeReconnect"))
value = value if (value := self.player.volume - 20) >= 0 else 150
await self.player.set_volume(value)
await interaction.response.send_message(self.player.get_msg('setVolume').format(value), ephemeral=True)
class VolumeMute(discord.ui.Button):
def __init__(self, player, style, row):
self.player = player
super().__init__(emoji="🔇" if player.volume else "🔈",
label=player.get_msg('buttonVolumeMute' if player.volume else "buttonVolumeUnmute"),
style=style, row=row)
async def callback(self, interaction: discord.Interaction):
if not await self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
if not self.player.node._available:
return await interaction.response.send_message(self.player.get_msg("nodeReconnect"))
if self.player.volume != 0:
value = 0
self.emoji = "🔈"
self.label = self.player.get_msg("buttonVolumeUnmute")
else:
value = self.player.settings.get("volume", 100)
self.emoji = "🔇"
self.label = self.player.get_msg("buttonVolumeMute")
await self.player.set_volume(value)
await interaction.response.edit_message(view=self.view)
class Tracks(discord.ui.Select):
def __init__(self, player, style, row):
@@ -237,6 +295,9 @@ btnType = {
"stop": Stop,
"add": Add,
"loop": Loop,
"volumeup": VolumeUp,
"volumedown": VolumeDown,
"volumemute": VolumeMute,
"tracks": Tracks
}
@@ -267,6 +328,8 @@ class InteractiveController(discord.ui.View):
self.cooldown = commands.CooldownMapping.from_cooldown(2.0, 10.0, key)
async def interaction_check(self, interaction):
if interaction.user.id in func.bot_access_user:
return True
if self.player.channel and interaction.user in self.player.channel.members:
retry_after = self.cooldown.update_rate_limit(interaction)
if retry_after: