Added settings controllermsg command

This commit is contained in:
Choco
2023-07-31 12:17:30 +08:00
parent 60562b58d7
commit 1b953aa7dc
8 changed files with 147 additions and 79 deletions

View File

@@ -223,7 +223,7 @@ class Admin(commands.Cog, name="settings"):
@settings.command(name="customcontroller", aliases=get_aliases("customcontroller"))
@commands.has_permissions(manage_guild=True)
@commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild)
async def customController(self, ctx: commands.Context):
async def customcontroller(self, ctx: commands.Context):
"Customizes music controller embeds."
player, settings = self.get_settings(ctx)
controller_settings = settings.get("default_controller", func.settings.controller)
@@ -232,6 +232,19 @@ class Admin(commands.Cog, name="settings"):
message = await ctx.send(embed=view.build_embed(), view=view)
view.response = message
@settings.command(name="controllermsg", aliases=get_aliases("controllermsg"))
@commands.has_permissions(manage_guild=True)
@commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild)
async def controllermsg(self, ctx: commands.Context):
"Toggles to send a message when clicking the button in the music controller."
player, settings = self.get_settings(ctx)
toggle = settings.get('controller_msg', True)
settings['controller_msg'] = not toggle
update_settings(ctx.guild.id, {'controller_msg': not toggle})
toggle = get_lang(ctx.guild.id, "enabled" if not toggle else "disabled")
await ctx.send(get_lang(ctx.guild.id, 'toggleControllerMsg').format(toggle))
@app_commands.command(name="debug")
async def debug(self, interaction: discord.Interaction):
if interaction.user.id not in func.settings.bot_access_user:

View File

@@ -20,6 +20,7 @@
"setVolume": "已將音量設置為 `{0}`%",
"togglecontroller": "現在您已 `{0}` 音樂控制器。",
"toggleDuplicateTrack": "現在您已 `{0}` 防止隊列中存在重複曲目。",
"toggleControllerMsg": "現在您已從音樂控制器 `{0}` 消息。",
"settingsMenu": "伺服器設置 | {0}",
"settingsTitle": "❤️ 基本資訊:",
"settingsValue": "前綴:`{0}`\n語言`{1}`\n啟用音樂控制器`{2}`\nDJ 角色:{3}\n投票繞過`{4}`\n24/7`{5}`\n默認音量`{6}%`\n播放時間`{7}`",

View File

@@ -20,6 +20,7 @@
"setVolume": "Stellen Sie die Lautstärke auf `{0}` % ein.",
"togglecontroller": "Jetzt haben Sie `{0}` den Musikcontroller.",
"toggleDuplicateTrack": "Jetzt haben Sie `{0}`, um doppelte Tracks in der Warteschlange zu verhindern.",
"toggleControllerMsg": "Sie haben jetzt `{0}` Nachrichten vom Musik-Controller.",
"settingsMenu": "Servereinstellungen | {0}",
"settingsTitle": "❤️ Grundlegende Informationen:",
"settingsValue": "Präfix: `{0}`\nSprache: `{1}`\nMusik-Controller aktivieren: `{2}`\nDJ-Rolle: {3}\nAbstimmungsumgehung: `{4}`\nRund um die Uhr: `{5}`\nStandardvolumen: `{6} %`\nSpielzeit: `{7}`",

View File

@@ -20,6 +20,7 @@
"setVolume": "Set the volume to `{0}`%",
"togglecontroller": "Now you have `{0}` the music controller.",
"toggleDuplicateTrack": "Now you have `{0}` to prevent duplicate track in the queue.",
"toggleControllerMsg": "Now you have `{0}` messages from the music controller.",
"settingsMenu": "Server Settings | {0}",
"settingsTitle": "❤️ Basic Info:",
"settingsValue": "Prefix: `{0}`\nLanguage: `{1}`\nEnable Music Controller: `{2}`\nDJ Role: {3}\nVote Bypass: `{4}`\n24/7: `{5}`\nDefault Volume: `{6}%`\nPlay Time: `{7}`",

View File

@@ -20,6 +20,7 @@
"setVolume": "Ajustar el volumen a `{0}`%",
"togglecontroller": "Ahora tienes `{0}` el controlador de música.",
"toggleDuplicateTrack": "Ahora tienes `{0}` para evitar que se agreguen pistas duplicadas a la cola.",
"toggleControllerMsg": "Ahora tiene `{0}` mensajes del controlador de música.",
"settingsMenu": "Configuración del servidor | {0}",
"settingsTitle": "❤️ Información básica:",
"settingsValue": "Prefijo: `{0}`\nIdioma: `{1}`\nHabilitar controlador de música: `{2}`\nRol de DJ: {3}\nBypass de votación: `{4}`\n24/7: `{5}`\nVolumen predeterminado: `{6}%`\nTiempo de reproducción: `{7}`",

View File

@@ -20,6 +20,7 @@
"setVolume": "音量を「{0}%」に設定しました。",
"togglecontroller": "今、音楽コントローラーは「{0}」です。",
"toggleDuplicateTrack": "今、キュー内の重複トラックを防止するための設定は「{0}」です。",
"toggleControllerMsg": "現在、音楽コントローラーから `{0}` 件のメッセージがあります。",
"settingsMenu": "サーバー設定| {0}",
"settingsTitle": "❤️ 基本情報:",
"settingsValue": "プレフィックス:「{0}」\n言語「{1}」\n音楽コントローラーを有効にする「{2}」\nDJロール{3}\n投票バイパス「{4}」\n24/7「{5}」\nデフォルトボリューム「{6}%」\n再生時間「{7}」",

View File

@@ -20,6 +20,7 @@
"setVolume": "볼륨을 `{0}`%로 설정했습니다.",
"togglecontroller": "이제 음악 컨트롤러가 `{0}`(으)로 설정되었습니다.",
"toggleDuplicateTrack": "이제 대기열에서 중복된 트랙을 방지하기 위해 `{0}`(으)로 설정되었습니다.",
"toggleControllerMsg": "이제 음악 컨트롤러로부터 `{0}` 메시지가 있습니다.",
"settingsMenu": "서버 설정 | {0}",
"settingsTitle": "❤️ 기본 정보:",
"settingsValue": "접두사: `{0}`\n언어: `{1}`\n음악 컨트롤러 사용: `{2}`\nDJ 역할: {3}\n투표 우회: `{4}`\n24/7 모드: `{5}`\n기본 볼륨: `{6}%`\n재생 시간: `{7}`",

View File

@@ -38,11 +38,30 @@ from typing import Dict
def key(interaction: discord.Interaction):
return interaction.user
class Back(discord.ui.Button):
def __init__(self, player, style, row):
class ControlButton(discord.ui.Button):
def __init__(
self,
player,
label: str = None,
**kwargs
):
self.player: voicelink.Player = player
super().__init__(emoji="⏮️", label=player.get_msg('buttonBack'), style=style, disabled=False if self.player.queue.history() or not self.player.current else True, row=row)
super().__init__(label=player.get_msg(label) if label else None, **kwargs)
async def send(self, interaction: discord.Interaction, content: str):
if self.player.settings.get("controller_msg", True):
return await interaction.response.send_message(content)
await interaction.response.defer()
class Back(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="⏮️",
label="buttonBack",
disabled=False if kwargs["player"].queue.history() or not kwargs["player"].current else True,
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
@@ -62,15 +81,19 @@ class Back(discord.ui.Button):
self.player.queue.backto(2)
await self.player.stop()
await interaction.response.send_message(self.player.get_msg("backed").format(interaction.user))
await self.send(interaction, self.player.get_msg("backed").format(interaction.user))
if self.player.queue._repeat.mode == voicelink.LoopType.track:
await self.player.set_repeat(voicelink.LoopType.off.name)
class Resume(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="⏸️", label=player.get_msg('buttonPause'), style=style, disabled=False if self.player.current else True, row=row)
class Resume(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="⏸️",
label="buttonPause",
disabled=not bool(kwargs["player"].current),
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if self.player.is_paused:
@@ -106,10 +129,13 @@ class Resume(discord.ui.Button):
await self.player.set_pause(True, interaction.user)
await interaction.response.edit_message(view=self.view)
class Skip(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="⏭️", label=player.get_msg('buttonSkip'), style=style, row=row)
class Skip(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="⏭️",
label="buttonSkip",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_playing:
@@ -126,16 +152,20 @@ class Skip(discord.ui.Button):
else:
return await interaction.response.send_message(self.player.get_msg("skipVote").format(interaction.user, len(self.player.skip_votes), required))
await interaction.response.send_message(self.player.get_msg("skipped").format(interaction.user))
await self.send(interaction, self.player.get_msg("skipped").format(interaction.user))
if self.player.queue._repeat.mode == voicelink.LoopType.track:
await self.player.set_repeat(voicelink.LoopType.off.name)
await self.player.stop()
class Stop(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="⏹️", label=player.get_msg('buttonLeave'), style=style, row=row)
class Stop(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="⏹️",
label="buttonLeave",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
if interaction.user in self.player.stop_votes:
@@ -147,13 +177,16 @@ class Stop(discord.ui.Button):
else:
return await interaction.response.send_message(self.player.get_msg("leaveVote").format(interaction.user, len(self.player.stop_votes), required))
await interaction.response.send_message(self.player.get_msg("left").format(interaction.user))
await self.send(interaction, self.player.get_msg("left").format(interaction.user))
await self.player.teardown()
class Add(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="❤️", style=style, disabled=False if self.player.current else True, row=row)
class Add(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="❤️",
disabled=not bool(kwargs["player"].current),
**kwargs
)
async def callback(self, interaction: discord.Interaction):
track = self.player.current
@@ -176,56 +209,66 @@ class Add(discord.ui.Button):
else:
await interaction.response.send_message(self.player.get_msg("playlistAddError2"), ephemeral=True)
class Loop(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="🔁", label=player.get_msg('buttonLoop'), style=style, row=row)
class Loop(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="🔁",
label="buttonLoop",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
return await interaction.response.send_message(self.player.get_msg('missingPerms_mode'), ephemeral=True)
mode = await self.player.set_repeat()
await interaction.response.send_message(self.player.get_msg('repeat').format(mode.capitalize()))
await self.send(interaction, self.player.get_msg('repeat').format(mode.capitalize()))
class VolumeUp(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="🔊", label=player.get_msg('buttonVolumeUp'), style=style, row=row)
class VolumeUp(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="🔊",
label="buttonVolumeUp",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
return await interaction.response.send_message(self.player.get_msg("missingPerms_function"))
value = value if (value := self.player.volume + 20) <= 150 else 150
await self.player.set_volume(value, interaction.user)
await interaction.response.send_message(self.player.get_msg('setVolume').format(value), ephemeral=True)
await self.send(interaction, self.player.get_msg('setVolume').format(value), ephemeral=True)
class VolumeDown(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="🔉", label=player.get_msg('buttonVolumeDown'), style=style, row=row)
class VolumeDown(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="🔉",
label="buttonVolumeDown",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
return await interaction.response.send_message(self.player.get_msg("missingPerms_function"))
value = value if (value := self.player.volume - 20) >= 0 else 0
await self.player.set_volume(value, interaction.user)
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: voicelink.Player = player
super().__init__(emoji="🔇" if player.volume else "🔈",
label=player.get_msg('buttonVolumeMute' if player.volume else "buttonVolumeUnmute"),
style=style, row=row)
class VolumeMute(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="🔇" if kwargs["player"].volume else "🔈",
label="buttonVolumeMute" if kwargs["player"].volume else "buttonVolumeUnmute",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_function"))
return await interaction.response.send_message(self.player.get_msg("missingPerms_function"))
if self.player.volume != 0:
value = 0
@@ -240,30 +283,32 @@ class VolumeMute(discord.ui.Button):
await interaction.response.edit_message(view=self.view)
class AutoPlay(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="💡",
label=player.get_msg('buttonAutoPlay'),
style=style, row=row)
class AutoPlay(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="💡",
label="buttonAutoPlay",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
return interaction.response.send_message(self.player.get_msg("missingPerms_autoplay"), ephemeral=True)
return await interaction.response.send_message(self.player.get_msg("missingPerms_autoplay"), ephemeral=True)
check = not self.player.settings.get("autoplay", False)
self.player.settings['autoplay'] = check
await interaction.response.send_message(self.player.get_msg('autoplay').format(self.player.get_msg('enabled') if check else self.player.get_msg('disabled')))
await self.send(interaction, self.player.get_msg('autoplay').format(self.player.get_msg('enabled') if check else self.player.get_msg('disabled')))
if not self.player.is_playing:
await self.player.do_next()
class Shuffle(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="🔀",
label=player.get_msg('buttonShuffle'),
style=style, row=row)
class Shuffle(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="🔀",
label="buttonShuffle",
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
@@ -277,15 +322,16 @@ class Shuffle(discord.ui.Button):
return await interaction.response.send_message(self.player.get_msg('shuffleVote').format(interaction.user, len(self.player.skip_votes), required))
await self.player.shuffle("queue", interaction.user)
await interaction.response.send_message(self.player.get_msg('shuffled'))
await self.send(interaction, self.player.get_msg('shuffled'))
class Forward(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="",
label=player.get_msg('buttonForward'),
disabled=False if self.player.current else True,
style=style, row=row)
class Forward(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="",
label="buttonForward",
disabled=not bool(kwargs["player"].current),
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
@@ -295,15 +341,16 @@ class Forward(discord.ui.Button):
return await interaction.response.send_message(self.player.get_msg('noTrackPlaying'), ephemeral=True)
await self.player.seek(self.player.position + 30000)
await interaction.response.send_message(self.player.get_msg('forward').format(func.time(self.player.position + 10000)))
await self.send(interaction, self.player.get_msg('forward').format(func.time(self.player.position + 10000)))
class Rewind(discord.ui.Button):
def __init__(self, player, style, row):
self.player: voicelink.Player = player
super().__init__(emoji="",
label=player.get_msg('buttonRewind'),
disabled=False if self.player.current else True,
style=style, row=row)
class Rewind(ControlButton):
def __init__(self, **kwargs):
super().__init__(
emoji="",
label="buttonRewind",
disabled=not bool(kwargs["player"].current)
**kwargs
)
async def callback(self, interaction: discord.Interaction):
if not self.player.is_privileged(interaction.user):
@@ -341,7 +388,9 @@ class Tracks(discord.ui.Select):
self.player.queue.skipto(int(self.values[0].split(". ")[0]))
await self.player.stop()
await interaction.response.send_message(self.player.get_msg("skipped").format(interaction.user))
if self.player.settings.get("controller_msg", True):
await interaction.response.send_message(self.player.get_msg("skipped").format(interaction.user))
btnType = {
"back": Back,
@@ -382,7 +431,7 @@ class InteractiveController(discord.ui.View):
style = btnColor.get(color.lower(), btnColor["grey"])
if not btnClass or (self.player.queue.is_empty and btn == "tracks"):
continue
self.add_item(btnClass(player, style, row))
self.add_item(btnClass(player=player, style=style, row=row))
self.cooldown = commands.CooldownMapping.from_cooldown(2.0, 10.0, key)