Add settings reset command for per-setting defaults
Introduces a settings reset subcommand with choices so admins can clear one guild override at a time via MongoDB $unset, with live player sync for volume and duplicate-track defaults. Adds settings.actions.resetDone across language files and optional reset aliases (restore, defaults) in settings examples.
This commit is contained in:
@@ -38,6 +38,23 @@ from voicelink.views import DebugView, HelpView, EmbedBuilderView
|
||||
from voicelink.placeholders import PlayerPlaceholder
|
||||
from voicelink.utils import format_ms, format_bytes, dispatch_message, send_localized_message
|
||||
|
||||
_RESET_LABELS: dict[str, str] = {
|
||||
"prefix": "prefix",
|
||||
"language": "lang",
|
||||
"dj role": "dj",
|
||||
"queue mode": "queue_type",
|
||||
"24/7 mode": "24/7",
|
||||
"vote bypass": "disabled_vote",
|
||||
"default volume": "volume",
|
||||
"music controller": "controller",
|
||||
"duplicate tracks": "duplicate_track",
|
||||
"controller messages": "controller_msg",
|
||||
"silent messages": "silent_msg",
|
||||
"stage announce template": "stage_announce_template",
|
||||
"song request channel": "music_request_channel",
|
||||
"custom controller embeds": "default_controller"
|
||||
}
|
||||
|
||||
def status_icon(status: bool) -> str:
|
||||
return "✅" if status else "❌"
|
||||
|
||||
@@ -295,6 +312,28 @@ class Settings(commands.Cog, name="settings"):
|
||||
}}})
|
||||
await send_localized_message(ctx, "songRequest.channelCreated", channel.mention)
|
||||
|
||||
@settings.command(name="reset", aliases=get_aliases("reset"))
|
||||
@app_commands.describe(setting="Which setting to restore to defaults (removes this guild override)")
|
||||
@app_commands.choices(setting=[
|
||||
app_commands.Choice(name=label.capitalize(), value=label)
|
||||
for label in _RESET_LABELS.keys()
|
||||
])
|
||||
@commands.has_permissions(manage_guild=True)
|
||||
@commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild)
|
||||
async def reset_setting(self, ctx: commands.Context, *, setting: str):
|
||||
"Remove one guild setting override so the bot uses its default again."
|
||||
setting_key = _RESET_LABELS.get(setting.lower())
|
||||
if not setting_key:
|
||||
return await send_localized_message(ctx, "settings.actions.resetNotFound", ", ".join(_RESET_LABELS.keys()))
|
||||
|
||||
await MongoDBHandler.update_settings(ctx.guild.id, {"$unset": {setting_key: ""}})
|
||||
player: voicelink.Player = ctx.guild.voice_client
|
||||
if setting_key == "volume" and player:
|
||||
await player.set_volume(100, ctx.author)
|
||||
elif setting_key == "duplicate_track" and player:
|
||||
player.queue._allow_duplicate = True
|
||||
await send_localized_message(ctx, "settings.actions.resetDone", setting.capitalize())
|
||||
|
||||
@app_commands.command(name="debug")
|
||||
async def debug(self, interaction: discord.Interaction):
|
||||
if interaction.user.id not in voicelink.Config().bot_access_user:
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Der Musikcontroller wurde erfolgreich `{0}`",
|
||||
"duplicateTrackToggled": "Du hast das hinzufügen von doppelten Tracks in der Warteschlange `{0}`",
|
||||
"controllerMsgToggled": "Nachrichten vom Musik-Controller wurden erfolgreich `{0}`",
|
||||
"silentMsgToggled": "Sie haben {0} stille Nachrichten."
|
||||
"silentMsgToggled": "Sie haben {0} stille Nachrichten.",
|
||||
"resetDone": "`{0}` wurde auf die Standardwerte des Servers zurückgesetzt.",
|
||||
"resetNotFound": "Ungültiger Einstellungsname. Bitte verwende eine der folgenden Einstellungen: {0}"
|
||||
},
|
||||
"menu": "Servereinstellungen | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "You now have `{0}` the music controller.",
|
||||
"duplicateTrackToggled": "You have now `{0}` duplicate track prevention.",
|
||||
"controllerMsgToggled": "You now have `{0}` messages from the music controller.",
|
||||
"silentMsgToggled": "You have {0} silent messaging."
|
||||
"silentMsgToggled": "You have {0} silent messaging.",
|
||||
"resetDone": "Reset `{0}` to server defaults.",
|
||||
"resetNotFound": "Invalid setting name. Please use one of the following: {0}"
|
||||
},
|
||||
"menu": "Server Settings | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Ahora tienes `{0}` el controlador de música.",
|
||||
"duplicateTrackToggled": "Ahora tienes `{0}` para evitar que se agreguen pistas duplicadas a la cola.",
|
||||
"controllerMsgToggled": "Ahora tiene `{0}` mensajes del controlador de música.",
|
||||
"silentMsgToggled": "Tienes {0} mensajes silenciosos."
|
||||
"silentMsgToggled": "Tienes {0} mensajes silenciosos.",
|
||||
"resetDone": "Reset `{0}` to server defaults.",
|
||||
"resetNotFound": "Nombre de opción inválido. Por favor, use una de las siguientes opciones: {0}"
|
||||
},
|
||||
"menu": "Configuración del servidor | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Vous avez maintenant `{0}` le contrôleur de musique.",
|
||||
"duplicateTrackToggled": "Vous avez maintenant `{0}` la prévention des morceaux en double.",
|
||||
"controllerMsgToggled": "Vous avez maintenant `{0}` les messages du contrôleur musical.",
|
||||
"silentMsgToggled": "Vous avez {0} messages silencieux."
|
||||
"silentMsgToggled": "Vous avez {0} messages silencieux.",
|
||||
"resetDone": "`{0}` a été réinitialisé aux paramètres par défaut du serveur.",
|
||||
"resetNotFound": "Nom d'option invalide. Veuillez utiliser une des options suivantes: {0}"
|
||||
},
|
||||
"menu": "Paramètres du serveur | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "今、音楽コントローラーは「{0}」です。",
|
||||
"duplicateTrackToggled": "今、キュー内の重複トラックを防止するための設定は「{0}」です。",
|
||||
"controllerMsgToggled": "現在、音楽コントローラーから `{0}` 件のメッセージがあります。",
|
||||
"silentMsgToggled": "あなたは{0}サイレントメッセージを持っています。"
|
||||
"silentMsgToggled": "あなたは{0}サイレントメッセージを持っています。",
|
||||
"resetDone": "`{0}`をサーバーのデフォルトにリセットしました。",
|
||||
"resetNotFound": "無効な設定名です。次のいずれかを使用してください: {0}"
|
||||
},
|
||||
"menu": "サーバー設定| {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "이제 음악 컨트롤러가 `{0}`(으)로 설정되었습니다.",
|
||||
"duplicateTrackToggled": "이제 대기열에서 중복된 트랙을 방지하기 위해 `{0}`(으)로 설정되었습니다.",
|
||||
"controllerMsgToggled": "이제 음악 컨트롤러로부터 `{0}` 메시지가 있습니다.",
|
||||
"silentMsgToggled": "당신은 {0} 침묵 메시지를 사용하고 있습니다."
|
||||
"silentMsgToggled": "당신은 {0} 침묵 메시지를 사용하고 있습니다.",
|
||||
"resetDone": "`{0}`을(를) 서버 기본값으로 초기화했습니다.",
|
||||
"resetNotFound": "잘못된 설정 이름입니다. 다음 중 하나를 사용하세요: {0}"
|
||||
},
|
||||
"menu": "서버 설정 | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Kontroler muzyki: `{0}`",
|
||||
"duplicateTrackToggled": "Unikanie duplikowania pozycji w kolejce: `{0}`",
|
||||
"controllerMsgToggled": "Wiadomości od kontrolera muzyki: `{0}`",
|
||||
"silentMsgToggled": "Masz {0} ciche wiadomości."
|
||||
"silentMsgToggled": "Masz {0} ciche wiadomości.",
|
||||
"resetDone": "`{0}` zostało zresetowane na domyślne ustawienia serwera.",
|
||||
"resetNotFound": "Nieprawidłowa nazwa ustawienia. Proszę użyć jednej z następujących opcji: {0}"
|
||||
},
|
||||
"menu": "Ustawnienia serwera | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Теперь у вас `{0}` контроллер музыки.",
|
||||
"duplicateTrackToggled": "Теперь у вас `{0}` фильтр дубликатов в очереди.",
|
||||
"controllerMsgToggled": "Теперь у вас `{0}` сообщения от плеера.",
|
||||
"silentMsgToggled": "У вас {0} тихих сообщений."
|
||||
"silentMsgToggled": "У вас {0} тихих сообщений.",
|
||||
"resetDone": "`{0}` установлено на значения по умолчанию сервера.",
|
||||
"resetNotFound": "Неверное имя настройки. Пожалуйста, используйте одно из следующих значений: {0}"
|
||||
},
|
||||
"menu": "Настройки сервера | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Тепер у вас `{0}` контролер музики.",
|
||||
"duplicateTrackToggled": "Тепер у вас `{0}` запобігання дублюванню треку в черзі.",
|
||||
"controllerMsgToggled": "Тепер у вас `{0}` повідомлення від контролера музики.",
|
||||
"silentMsgToggled": "У вас {0} тихих повідомлень."
|
||||
"silentMsgToggled": "У вас {0} тихих повідомлень.",
|
||||
"resetDone": "`{0}` встановлено на значення за замовчуванням сервера.",
|
||||
"resetNotFound": "Неправильна назва налаштування. Будь ласка, використовуйте одне з наведених нижче значень: {0}"
|
||||
},
|
||||
"menu": "Налаштування сервера | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "Bây giờ bạn đã `{0}` bộ điều khiển nhạc.",
|
||||
"duplicateTrackToggled": "Bây giờ bạn đã `{0}` tính năng ngăn chặn bài hát trùng lặp.",
|
||||
"controllerMsgToggled": "Bây giờ bạn đã `{0}` tin nhắn từ bộ điều khiển nhạc.",
|
||||
"silentMsgToggled": "Bạn có {0} tin nhắn im lặng."
|
||||
"silentMsgToggled": "Bạn có {0} tin nhắn im lặng.",
|
||||
"resetDone": "Reset `{0}` to server defaults.",
|
||||
"resetNotFound": "Tên cài đặt không hợp lệ. Vui lòng sử dụng một trong các tùy chọn sau: {0}"
|
||||
},
|
||||
"menu": "Cài Đặt Máy Chủ | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "您现在已 `{0}` 音乐控制器。",
|
||||
"duplicateTrackToggled": "您已 `{0}` 重复曲目预防功能。",
|
||||
"controllerMsgToggled": "您现在已 `{0}` 来自音乐控制器的消息。",
|
||||
"silentMsgToggled": "您已 {0} 静默消息。"
|
||||
"silentMsgToggled": "您已 {0} 静默消息。",
|
||||
"resetDone": "`{0}` 已重置为服务器默认值。",
|
||||
"resetNotFound": "无效的设置名称。请使用以下之一: {0}"
|
||||
},
|
||||
"menu": "服务器设置 | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -121,7 +121,9 @@
|
||||
"controllerToggled": "您現在已 `{0}` 音樂控制器。",
|
||||
"duplicateTrackToggled": "您已 `{0}` 重複曲目防止功能。",
|
||||
"controllerMsgToggled": "您現在已 `{0}` 來自音樂控制器的訊息。",
|
||||
"silentMsgToggled": "您已 {0} 靜音訊息。"
|
||||
"silentMsgToggled": "您已 {0} 靜音訊息。",
|
||||
"resetDone": "`{0}` 已重置為伺服器預設值。",
|
||||
"resetNotFound": "無效的設定名稱。請使用以下之一: {0}"
|
||||
},
|
||||
"menu": "伺服器設定 | {0}",
|
||||
"basic": {
|
||||
|
||||
@@ -232,5 +232,8 @@
|
||||
"stageannounce": "anuncio_escenario",
|
||||
"Soundcloud": "Soundcloud",
|
||||
"Fairqueue":"ColaJusta",
|
||||
"togglecontroller":"cambiarcontrolador"
|
||||
"togglecontroller":"cambiarcontrolador",
|
||||
"reset": "reiniciar",
|
||||
"Which setting to restore to defaults (removes this guild override)": "Qué configuración restaurar a los valores por defecto (elimina esta sobreescritura de servidor)",
|
||||
"Remove one guild setting override so the bot uses its default again.": "Elimina una sobreescritura de configuración de servidor para que el bot use sus valores por defecto nuevamente."
|
||||
}
|
||||
|
||||
@@ -232,5 +232,8 @@
|
||||
"stageannounce": "anuncio_escenario",
|
||||
"Soundcloud": "Soundcloud",
|
||||
"Fairqueue":"ColaJusta",
|
||||
"togglecontroller":"cambiarcontrolador"
|
||||
"togglecontroller":"cambiarcontrolador",
|
||||
"reset": "reiniciar",
|
||||
"Which setting to restore to defaults (removes this guild override)": "Qué configuración restaurar a los valores por defecto (elimina esta sobreescritura de servidor)",
|
||||
"Remove one guild setting override so the bot uses its default again.": "Elimina una sobreescritura de configuración de servidor para que el bot use sus valores por defecto nuevamente."
|
||||
}
|
||||
|
||||
@@ -232,5 +232,8 @@
|
||||
"stageannounce": "舞台公告",
|
||||
"Soundcloud": "SoundCloud",
|
||||
"Fairqueue": "公平队列",
|
||||
"togglecontroller": "切换控制器"
|
||||
"togglecontroller": "切换控制器",
|
||||
"reset": "重置",
|
||||
"Which setting to restore to defaults (removes this guild override)": "要重置为默认值的设置(移除此服务器覆盖)",
|
||||
"Remove one guild setting override so the bot uses its default again.": "移除一个服务器设置覆盖,使机器人使用其默认值。"
|
||||
}
|
||||
@@ -232,5 +232,8 @@
|
||||
"stageannounce": "舞台公告",
|
||||
"Soundcloud": "Soundcloud",
|
||||
"Fairqueue": "公平隊列",
|
||||
"togglecontroller": "切換控制器"
|
||||
"togglecontroller": "切換控制器",
|
||||
"reset": "重置",
|
||||
"Which setting to restore to defaults (removes this guild override)": "要重置為預設值的設定(移除此伺服器覆蓋)",
|
||||
"Remove one guild setting override so the bot uses its default again.": "移除一個伺服器設定覆蓋,使機器人使用其預設值。"
|
||||
}
|
||||
Reference in New Issue
Block a user