From 5b643893131e4ddf77298fe1f99380c14b4111ab Mon Sep 17 00:00:00 2001 From: Choco <94597336+ChocoMeow@users.noreply.github.com> Date: Tue, 4 Jun 2024 23:16:49 +0800 Subject: [PATCH] Fixed some bugs --- cogs/basic.py | 4 ++-- cogs/playlist.py | 8 ++++---- settings Example.json | 5 +++-- views/controller.py | 2 +- voicelink/player.py | 12 ++++++------ voicelink/pool.py | 5 ++++- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/cogs/basic.py b/cogs/basic.py index 2276d10..b69e1cc 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -616,7 +616,7 @@ class Basic(commands.Cog): if not player.is_privileged(ctx.author): return await send(ctx, "missingPerms_mode", ephemeral=True) - await player.set_repeat(mode) + await player.set_repeat(mode, ctx.author) await send(ctx, "repeat", mode.capitalize()) @commands.hybrid_command(name="clear", aliases=get_aliases("clear")) @@ -760,7 +760,7 @@ class Basic(commands.Cog): if not player.is_privileged(ctx.author): return await send(ctx, "missingPerms_pos", ephemeral=True) - track1, track2 = await player.swap_track(position1, position2) + track1, track2 = await player.swap_track(position1, position2, ctx.author) await send(ctx, "swapped", track1.title, track2.title) @commands.hybrid_command(name="move", aliases=get_aliases("move")) diff --git a/cogs/playlist.py b/cogs/playlist.py index 8f387b0..c49a303 100644 --- a/cogs/playlist.py +++ b/cogs/playlist.py @@ -41,7 +41,7 @@ from function import ( from datetime import datetime from views import PlaylistView, InboxView, HelpView -def assign_playlistId(existed: list) -> str: +def assign_playlist_id(existed: list) -> str: for i in range(200, 210): if str(i) not in existed: return str(i) @@ -240,7 +240,7 @@ class Playlists(commands.Cog, name="playlist"): return await send(ctx, "playlistNotInvaildUrl", ephemeral=True) data = {'uri': link, 'perms': {'read': []}, 'name': name, 'type': 'link'} if link else {'tracks': [], 'perms': {'read': [], 'write': [], 'remove': []}, 'name': name, 'type': 'playlist'} - await update_user(ctx.author.id, {"$set": {f"playlist.{assign_playlistId([data for data in user])}": data}}) + await update_user(ctx.author.id, {"$set": {f"playlist.{assign_playlist_id([data for data in user])}": data}}) await send(ctx, "playlistCreated", name) @playlist.command(name="delete", aliases=get_aliases("delete")) @@ -352,7 +352,7 @@ class Playlists(commands.Cog, name="playlist"): update_data, dId = {}, {dId for dId in user["playlist"]} for data in view.newplaylist[:(max_p - len(user['playlist']))]: - addId = assign_playlistId(dId) + addId = assign_playlist_id(dId) await update_user(data['sender'], {"$push": {f"playlist.{data['referId']}.perms.read": ctx.author.id}}) update_data[f'playlist.{addId}'] = { 'user': data['sender'], 'referId': data['referId'], @@ -501,7 +501,7 @@ class Playlists(commands.Cog, name="playlist"): track_ids = track_ids.decode().split(",") data = {'tracks': track_ids, 'perms': {'read': [], 'write': [], 'remove': []}, 'name': name, 'type': 'playlist'} - await update_user(ctx.author.id, {"$set": {f"playlist.{assign_playlistId([data for data in user])}": data}}) + await update_user(ctx.author.id, {"$set": {f"playlist.{assign_playlist_id([data for data in user])}": data}}) await send(ctx, 'playlistCreated', name) except: diff --git a/settings Example.json b/settings Example.json index 34fc5c0..879fbc8 100644 --- a/settings Example.json +++ b/settings Example.json @@ -35,10 +35,11 @@ "embed_color":"0xb3b3b3", "default_max_queue": 1000, "lyrics_platform": "lyrist", - "ipc_server": { - "password": "YOUR_PASSWORD", + "ipc_client": { "host": "127.0.0.1", "port": 8000, + "password": "YOUR_PASSWORD", + "secure": false, "enable": false }, "sources_settings": { diff --git a/views/controller.py b/views/controller.py index 0f7eb3e..678b9a4 100644 --- a/views/controller.py +++ b/views/controller.py @@ -219,7 +219,7 @@ class Loop(ControlButton): if not self.player.is_privileged(interaction.user): return await self.send(interaction, 'missingPerms_mode', ephemeral=True) - mode = await self.player.set_repeat() + mode = await self.player.set_repeat(requester=interaction.user) self.emoji = self.get_next_loop_emoji(self.player) await interaction.response.edit_message(view=self.view) diff --git a/voicelink/player.py b/voicelink/player.py index cb98b0d..8743d93 100644 --- a/voicelink/player.py +++ b/voicelink/player.py @@ -652,7 +652,7 @@ class Player(VoiceProtocol): return moved_track - async def set_repeat(self, mode: str = None) -> str: + async def set_repeat(self, mode: str = None, requester: Member = None) -> str: if not mode: mode = self.queue._repeat.next().name @@ -667,7 +667,7 @@ class Player(VoiceProtocol): raise VoicelinkException("Invalid repeat mode.") if self.is_ipc_connected: - await self.send_ws({"op": "repeatTrack", "repeatMode": mode}) + await self.send_ws({"op": "repeatTrack", "repeatMode": mode}, requester) self._logger.debug(f"Player in {self.guild.name}({self.guild.id}) has been update the repeat mode to {mode}.") return mode @@ -736,7 +736,7 @@ class Player(VoiceProtocol): except IndexError: return False - tracks = self._node.get_recommendations(track) + tracks = await self._node.get_recommendations(track) if tracks: await self.add_track(tracks, duplicate=False) @@ -745,7 +745,7 @@ class Player(VoiceProtocol): return False async def send_ws(self, payload, requester: Member = None): - payload['guild_id'] = self.guild.id + payload['guild_id'] = str(self.guild.id) if requester: - payload['requester_id'] = requester.id - await self.bot.ipc.send(payload) + payload['requester_id'] = str(requester.id) + await self.bot.ipc.send(payload) \ No newline at end of file diff --git a/voicelink/pool.py b/voicelink/pool.py index 5ee3c44..b81bbe5 100644 --- a/voicelink/pool.py +++ b/voicelink/pool.py @@ -526,8 +526,11 @@ class Node: for track in tracks ] async def get_recommendations(self, track: Track, limit: int = None) -> List[Track]: + if not self.spotify_client: + return + if track.spotify: - spotify_tracks = await self._spotify_client.similar_track(seed_tracks=track.identifier) + spotify_tracks = await self._spotify_client.similar_track(seed_tracks=track.identifier, limit=limit) tracks = [ Track(