diff --git a/cogs/settings.py b/cogs/settings.py index 3e662a6..ad6e22d 100644 --- a/cogs/settings.py +++ b/cogs/settings.py @@ -99,16 +99,16 @@ class Settings(commands.Cog, name="settings"): @settings.command(name="queue", aliases=get_aliases("queue")) @app_commands.choices(mode=[ - app_commands.Choice(name="FairQueue", value="FairQueue"), - app_commands.Choice(name="Queue", value="Queue") + app_commands.Choice(name=queue_type.capitalize(), value=queue_type) + for queue_type in voicelink.queue.QUEUE_TYPES.keys() ]) @commands.has_permissions(manage_guild=True) @commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild) async def queue(self, ctx: commands.Context, mode: str): "Change to another type of queue mode." - mode = "FairQueue" if mode.lower() == "fairqueue" else "Queue" - await update_settings(ctx.guild.id, {"$set": {"queueType": mode}}) - await send(ctx, "setqueue", mode) + mode = mode if mode.lower() in voicelink.queue.QUEUE_TYPES else next(iter(voicelink.queue.QUEUE_TYPES)) + await update_settings(ctx.guild.id, {"$set": {"queue_type": mode}}) + await send(ctx, "setQueue", mode.capitalize()) @settings.command(name="247", aliases=get_aliases("247")) @commands.has_permissions(manage_guild=True) @@ -126,8 +126,8 @@ class Settings(commands.Cog, name="settings"): async def bypassvote(self, ctx: commands.Context): "Toggles voting system." settings = await get_settings(ctx.guild.id) - toggle = settings.get('votedisable', True) - await update_settings(ctx.guild.id, {"$set": {'votedisable': not toggle}}) + toggle = settings.get('disabled_vote', True) + await update_settings(ctx.guild.id, {"$set": {'disabled_vote': not toggle}}) await send(ctx, 'bypassVote', await get_lang(ctx.guild.id, "enabled" if not toggle else "disabled")) @settings.command(name="view", aliases=get_aliases("view")) @@ -149,16 +149,16 @@ class Settings(commands.Cog, name="settings"): settings.get('lang', 'EN'), settings.get('controller', True), dj_role.name if dj_role else 'None', - settings.get('votedisable', False), + settings.get('disabled_vote', False), settings.get('24/7', False), settings.get('volume', 100), - ctime(settings.get('playTime', 0) * 60 * 1000), + ctime(settings.get('played_time', 0) * 60 * 1000), inline=True) ) embed.add_field(name=texts[3], value=texts[4].format( - settings.get("queueType", "Queue"), + settings.get("queue_type", "Queue"), func.settings.max_queue, - settings.get("duplicateTrack", True) + settings.get("duplicate_track", True) )) if stage_template := settings.get("stage_announce_template"): @@ -212,12 +212,12 @@ class Settings(commands.Cog, name="settings"): async def duplicatetrack(self, ctx: commands.Context): "Toggle Vocard to prevent duplicate songs from queuing." settings = await get_settings(ctx.guild.id) - toggle = not settings.get('duplicateTrack', False) + toggle = not settings.get('duplicate_track', False) player: voicelink.Player = ctx.guild.voice_client if player: player.queue._allow_duplicate = toggle - await update_settings(ctx.guild.id, {"$set": {'duplicateTrack': toggle}}) + await update_settings(ctx.guild.id, {"$set": {'duplicate_track': toggle}}) return await send(ctx, "toggleDuplicateTrack", await get_lang(ctx.guild.id, "disabled" if toggle else "enabled")) @settings.command(name="customcontroller", aliases=get_aliases("customcontroller")) @@ -248,9 +248,9 @@ class Settings(commands.Cog, name="settings"): async def silentmsg(self, ctx: commands.Context): "Toggle silent messaging to send discreet messages without alerting recipients." settings = await get_settings(ctx.guild.id) - toggle = not settings.get('silentMsg', False) + toggle = not settings.get('silent_msg', False) - await update_settings(ctx.guild.id, {"$set": {'silentMsg': toggle}}) + await update_settings(ctx.guild.id, {"$set": {'silent_msg': toggle}}) await send(ctx, 'toggleSilentMsg', await get_lang(ctx.guild.id, "enabled" if toggle else "disabled")) @settings.command(name="stageannounce", aliases=get_aliases("stageannounce")) diff --git a/function.py b/function.py index 7e1029a..207342c 100644 --- a/function.py +++ b/function.py @@ -223,7 +223,7 @@ async def send( "embed": embed, "ephemeral": ephemeral, "allowed_mentions": ALLOWED_MENTIONS, - "silent": settings.get("silentMsg", False), + "silent": settings.get("silent_msg", False), } if "delete_after" in send_func.__code__.co_varnames: diff --git a/ipc/methods.py b/ipc/methods.py index a3c3cca..384eece 100644 --- a/ipc/methods.py +++ b/ipc/methods.py @@ -12,12 +12,14 @@ RATELIMIT_COUNTER: Dict[int, Dict[str, float]] = {} SCOPES = { "prefix": str, "lang": str, - "queueType": str, + "queue_type": str, "dj": int, "controller": bool, + "controller_msg": bool, "24/7": bool, - "votedisable": bool, - "duplicateTrack": bool, + "disabled_vote": bool, + "duplicate_track": bool, + "silent_msg": bool, "default_controller": dict, "stage_announce_template": str } diff --git a/langs/CH.json b/langs/CH.json index e89990c..d61e527 100644 --- a/langs/CH.json +++ b/langs/CH.json @@ -15,7 +15,7 @@ "changedLanguage": "已成功切換到 `{0}` 語言包。", "setPrefix": "完成!我的前綴在您的伺服器中現在是 `{0}`。嘗試運行 `{1}ping` 來測試它。", "setDJ": "已將 DJ 設置為 {0}。", - "setqueue": "已將隊列模式設置為 `{0}`。", + "setQueue": "已將隊列模式設置為 `{0}`。", "247": "現在您有 `{0}` 24/7 模式。", "bypassVote": "現在您有 `{0}` 投票系統。", "setVolume": "已將音量設置為 `{0}`%", diff --git a/langs/DE.json b/langs/DE.json index 482d428..932564a 100644 --- a/langs/DE.json +++ b/langs/DE.json @@ -15,7 +15,7 @@ "changedLanguage": "Erfolgreich auf das Sprachpaket `{0}` geändert.", "setPrefix": "Erledigt! Mein Präfix ist jetzt `{0}` auf deinem Server. Versuche, `{1}ping` auszuführen, um es zu testen.", "setDJ": "Stelle den DJ auf {0}.", - "setqueue": "Stelle den Warteschlangenmodus auf `{0}` ein.", + "setQueue": "Stelle den Warteschlangenmodus auf `{0}` ein.", "247": "Der 24/7-Modus wurde erfolgreich `{0}`.", "bypassVote": "Das Abstimmungssystem wurde `{0}`", "setVolume": "Stelle die Lautstärke auf `{0}`%.", diff --git a/langs/EN.json b/langs/EN.json index 0f073f5..096d6a9 100644 --- a/langs/EN.json +++ b/langs/EN.json @@ -15,7 +15,7 @@ "changedLanguage": "Successfully changed to `{0}` language pack.", "setPrefix": "Done! My prefix in your server is now `{0}`. Try running `{1}ping` to test it out.", "setDJ": "Set the dj to {0}.", - "setqueue": "Set queue mode to `{0}`.", + "setQueue": "Set queue mode to `{0}`.", "247": "24/7 mode is now `{0}`.", "bypassVote": "You have `{0}` voting system.", "setVolume": "Set the volume to `{0}`%", diff --git a/langs/ES.json b/langs/ES.json index 6bd17cc..cb8691c 100644 --- a/langs/ES.json +++ b/langs/ES.json @@ -15,7 +15,7 @@ "changedLanguage": "Cambiado con éxito al paquete de idioma `{0}`.", "setPrefix": "¡Listo! Mi prefijo en tu servidor ahora es `{0}`. Intenta ejecutar `{1}ping` para probarlo.", "setDJ": "Establecer el DJ a {0}.", - "setqueue": "Establecer el modo de cola en `{0}`.", + "setQueue": "Establecer el modo de cola en `{0}`.", "247": "Ahora tienes `{0}` modo 24/7.", "bypassVote": "Ahora tienes `{0}` sistema de votación.", "setVolume": "Ajustar el volumen a `{0}`%", diff --git a/langs/FR.json b/langs/FR.json index de8f982..5dfbef2 100644 --- a/langs/FR.json +++ b/langs/FR.json @@ -15,7 +15,7 @@ "changedLanguage": "Changement réussi vers le pack de langue `{0}`.", "setPrefix": "C'est fait ! Mon préfixe dans votre serveur est désormais `{0}`. Essayez de lancer `{1}ping` pour tester.", "setDJ": "Le DJ a été défini sur {0}.", - "setqueue": "Le mode file d'attente est défini sur `{0}`.", + "setQueue": "Le mode file d'attente est défini sur `{0}`.", "247": "Le mode 24/7 est maintenant `{0}`.", "bypassVote": "Vous avez le système de vote `{0}`.", "setVolume": "Le volume est réglé à `{0}`%", diff --git a/langs/JA.json b/langs/JA.json index 6a47f8e..d79b725 100644 --- a/langs/JA.json +++ b/langs/JA.json @@ -15,7 +15,7 @@ "changedLanguage": "「{0}」言語パックに正常に変更しました。", "setPrefix": "完了!あなたのサーバーのプレフィックスは今や「{0}」です。 `{1}ping`を実行してテストしてみてください。", "setDJ": "{0}にDJを設定しました。", - "setqueue": "キューモードを「{0}」に設定しました。", + "setQueue": "キューモードを「{0}」に設定しました。", "247": "今、24/7モードは「{0}」です。", "bypassVote": "今、投票システムは「{0}」になりました。", "setVolume": "音量を「{0}%」に設定しました。", diff --git a/langs/KO.json b/langs/KO.json index c491e96..eedb8e0 100644 --- a/langs/KO.json +++ b/langs/KO.json @@ -15,7 +15,7 @@ "changedLanguage": "성공적으로 `{0}` 언어 팩으로 변경되었습니다.", "setPrefix": "완료되었습니다! 이 서버에서 내 접두사는 이제 `{0}`입니다. `{1}ping`을 실행하여 테스트해보세요.", "setDJ": "DJ를 {0}(으)로 설정했습니다.", - "setqueue": "큐 모드를 `{0}`(으)로 설정했습니다.", + "setQueue": "큐 모드를 `{0}`(으)로 설정했습니다.", "247": "이제 24/7 모드에서 `{0}`으로 변경되었습니다.", "bypassVote": "이제 `{0}` 투표 시스템을 사용할 수 있습니다.", "setVolume": "볼륨을 `{0}`%로 설정했습니다.", diff --git a/langs/PL.json b/langs/PL.json index 517fd28..91e7f20 100644 --- a/langs/PL.json +++ b/langs/PL.json @@ -15,7 +15,7 @@ "changedLanguage": "Pomyślnie zmieniono pakiet językowy na: `{0}` .", "setPrefix": "Gotowe! Mój prefix na tym serwerze to teraz `{0}`. Spróbuj uruchomić polecenie `{1}ping`, aby go przetestować.", "setDJ": "Ustawiono DJ jako {0}.", - "setqueue": "Zmienionio tryb kolejki na `{0}`.", + "setQueue": "Zmienionio tryb kolejki na `{0}`.", "247": "Tryb 24/7: `{0}`", "bypassVote": "System głosowania: `{0}`", "setVolume": "Ustawiono głośność na `{0}`%", diff --git a/langs/RU.json b/langs/RU.json index d7944a2..cae3948 100644 --- a/langs/RU.json +++ b/langs/RU.json @@ -15,7 +15,7 @@ "changedLanguage": "Язык успешно изменен на `{0}`.", "setPrefix": "Готово! Мой префикс на вашем сервере теперь `{0}`. Попробуйте запустить `{1}ping`, чтобы проверить его.", "setDJ": "Установить роль DJ {0}.", - "setqueue": "Установить режим очереди на `{0}`.", + "setQueue": "Установить режим очереди на `{0}`.", "247": "Теперь у вас `{0}` режим 24/7.", "bypassVote": "Теперь у вас `{0}` система голосования.", "setVolume": "Установить громкость на `{0}`%", diff --git a/langs/UA.json b/langs/UA.json index b77411b..6b8443d 100644 --- a/langs/UA.json +++ b/langs/UA.json @@ -15,7 +15,7 @@ "changedLanguage": "Успішно змінено на мовний пакет `{0}`.", "setPrefix": "Готово! Мій префікс на вашому сервері тепер `{0}`. Спробуйте запустити `{1}ping`, щоб перевірити його.", "setDJ": "Встановити роль DJ {0}.", - "setqueue": "Встановити режим черги на `{0}`.", + "setQueue": "Встановити режим черги на `{0}`.", "247": "Тепер у вас `{0}` режим 24/7.", "bypassVote": "Тепер у вас `{0}` система голосування.", "setVolume": "Встановити гучність на `{0}`%", diff --git a/update.py b/update.py index 35cb466..2ada435 100644 --- a/update.py +++ b/update.py @@ -31,7 +31,7 @@ import subprocess from io import BytesIO ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) -__version__ = "v2.7.2b2" +__version__ = "v2.7.2b3" # URLs for update and migration PYTHON_CMD_NAME = os.path.basename(sys.executable) diff --git a/voicelink/player.py b/voicelink/player.py index e53dc1d..fbf3d7f 100644 --- a/voicelink/player.py +++ b/voicelink/player.py @@ -51,8 +51,8 @@ from .exceptions import VoicelinkException, FilterInvalidArgument, TrackInvalidP from .filters import Filter, Filters from .objects import Track, Playlist from .pool import Node, NodePool -from .queue import Queue, FairQueue from .placeholders import Placeholders, build_embed +from .queue import Queue, QUEUE_TYPES from random import shuffle, choice async def connect_channel(ctx: Union[commands.Context, Interaction], channel: VoiceChannel = None): @@ -115,7 +115,10 @@ class Player(VoiceProtocol): self.settings: dict = settings self.joinTime: float = round(time.time()) self._volume: int = self.settings.get('volume', 100) - self.queue: Queue = eval(self.settings.get("queueType", "Queue"))(self.settings.get("maxQueue", func.settings.max_queue), self.settings.get("duplicateTrack", True), self.get_msg) + self.queue: Queue = QUEUE_TYPES.get(self.settings.get("queue_type", "queue").lower())( + self.settings.get("max_queue", func.settings.max_queue), + self.settings.get("duplicate_track", True), self.get_msg + ) self._node = NodePool.get_node() self._current: Optional[Track] = None @@ -263,7 +266,7 @@ class Player(VoiceProtocol): If `leave` is True and the channel has three members, the requirement adjusts to 2 votes. """ - if self.settings.get('votedisable'): + if self.settings.get('disabled_vote'): return 0 required = ceil((len(self.channel.members) - 1) / 2.5) @@ -493,8 +496,8 @@ class Player(VoiceProtocol): """Cleans up the player and associated resources.""" try: await func.update_settings(self.guild.id, {"$set": { - "lastActice": (timeNow := round(time.time())), - "playTime": round(self.settings.get("playTime", 0) + ((timeNow - self.joinTime) / 60), 2) + "last_active": (timeNow := round(time.time())), + "played_time": round(self.settings.get("played_time", 0) + ((timeNow - self.joinTime) / 60), 2) }}) if self.is_ipc_connected: @@ -711,7 +714,7 @@ class Player(VoiceProtocol): await self.send_ws({ "op": "shuffleTrack", "tracks": [{"trackId": track.track_id, "requesterId": str(track.requester.id)} for track in replacement], - "queueType": queue_type + "queue_type": queue_type }, requester) self._logger.debug(f"Player in {self.guild.name}({self.guild.id}) has been shuffled the queue.") @@ -785,7 +788,7 @@ class Player(VoiceProtocol): if self.is_ipc_connected: await self.send_ws({ "op": "clearQueue", - "queueType": queue_type + "queue_type": queue_type }, requester) async def remove_filter(self, filter_tag: str, requester: Member = None, fast_apply: bool = False) -> Filters: diff --git a/voicelink/queue.py b/voicelink/queue.py index cb5bd3b..58092e2 100644 --- a/voicelink/queue.py +++ b/voicelink/queue.py @@ -223,3 +223,8 @@ class FairQueue(Queue): self.put_at_index(lastIndex, item) return lastIndex + +QUEUE_TYPES: Dict[str, Queue] = { + "queue": Queue, + "fairqueue": FairQueue +}