fix: Wrong to_dict conversion

This commit is contained in:
Lemon4ksan
2025-01-09 14:03:01 +03:00
parent d797fec45f
commit c521d32bc8
3 changed files with 30 additions and 18 deletions

View File

@@ -68,7 +68,7 @@ class BaseGuildsDatabase:
"""
guilds.insert_one(ExplicitGuild(
_id=gid,
tracks_list=[],
next_tracks_list=[],
previous_tracks_list=[],
current_track=None,
is_stopped=True,

View File

@@ -5,46 +5,58 @@ from MusicBot.database.base import BaseGuildsDatabase
class VoiceGuildsDatabase(BaseGuildsDatabase):
def clear_queue(self, gid: int) -> None:
self.update(gid, {'next_tracks_list': []})
def clear_history(self, gid: int) -> None:
self.update(gid, {'previous_tracks_list': []})
def get_current_track(self, gid: int) -> dict[str, Any] | None:
guild = self.get_guild(gid)
return guild.get('current_track')
def get_previous_tracks_list(self, gid: int) -> list[dict[str, Any]]:
guild = self.get_guild(gid)
return guild.get('previous_tracks_list')
def get_tracks_list(self, gid: int) -> list[dict[str, Any]]:
def get_next_tracks_list(self, gid: int) -> list[dict[str, Any]]:
guild = self.get_guild(gid)
return guild.get('tracks_list')
return guild.get('next_tracks_list')
def pop_track(self, gid: int) -> dict[str, Any]:
tracks_list = self.get_tracks_list(gid)
def get_next_track(self, gid: int) -> dict[str, Any]:
tracks_list = self.get_next_tracks_list(gid)
track = tracks_list.pop(0)
self.update(gid, {'tracks_list': tracks_list})
self.update(gid, {'next_tracks_list': tracks_list})
return track
def insert_track(self, gid: int, track: Track | dict[str, Any]) -> None:
if isinstance(track, Track):
track = track.to_dict(for_request=True)
tracks_list = self.get_tracks_list(gid)
track = track.to_dict()
tracks_list = self.get_next_tracks_list(gid)
tracks_list.insert(0, track)
self.update(gid, {'tracks_list': tracks_list})
self.update(gid, {'next_tracks_list': tracks_list})
def add_track(self, gid: int, track: Track) -> None:
tracks_list = self.get_tracks_list(gid)
tracks_list.append(track.to_dict(for_request=True))
self.update(gid, {'tracks_list': tracks_list})
def append_track(self, gid: int, track: Track) -> None:
tracks_list = self.get_next_tracks_list(gid)
tracks_list.append(track.to_dict())
self.update(gid, {'next_tracks_list': tracks_list})
def set_current_track(self, gid: int, track: Track) -> None:
self.update(gid, {'current_track': track.to_dict(for_request=True)})
self.update(gid, {'current_track': track.to_dict()})
def add_previous_track(self, gid: int, track: Track | dict[str, Any]) -> None:
tracks_list = self.get_previous_tracks_list(gid)
if isinstance(track, Track):
track = track.to_dict(for_request=True)
track = track.to_dict()
tracks_list.insert(0, track)
if len(tracks_list) > 50:
tracks_list.pop()
self.update(gid, {'previous_tracks_list': tracks_list})
def pop_previous_track(self, gid: int) -> dict[str, Any]:
def get_previous_track(self, gid: int) -> dict[str, Any] | None:
tracks_list = self.get_previous_tracks_list(gid)
if len(tracks_list) == 0:
return
track = tracks_list.pop(0)
self.update(gid, {'previous_tracks_list': tracks_list})
return track

View File

@@ -1,7 +1,7 @@
from typing import TypedDict, Any
class Guild(TypedDict):
tracks_list: list[dict[str, Any]]
next_tracks_list: list[dict[str, Any]]
previous_tracks_list: list[dict[str, Any]]
current_track: dict[str, Any] | None
is_stopped: bool
@@ -10,7 +10,7 @@ class Guild(TypedDict):
class ExplicitGuild(TypedDict):
_id: int
tracks_list: list[dict[str, Any]]
next_tracks_list: list[dict[str, Any]]
previous_tracks_list: list[dict[str, Any]]
current_track: dict[str, Any] | None
is_stopped: bool # Prevents the `after` callback of play_track