From c8cd3fe599899e7c5fe850d945c7ea976a6bab91 Mon Sep 17 00:00:00 2001 From: Crussader <75786691+Crussader@users.noreply.github.com> Date: Thu, 28 Oct 2021 18:53:02 +0400 Subject: [PATCH] code cleanup --- pomice/player.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pomice/player.py b/pomice/player.py index 3f8887c..34f5181 100644 --- a/pomice/player.py +++ b/pomice/player.py @@ -15,7 +15,7 @@ from discord.ext import commands, tasks from . import events from .enums import SearchType -from .events import PomiceEvent, TrackStartEvent +from .events import PomiceEvent, TrackEndEvent, TrackStartEvent from .exceptions import TrackInvalidPosition from .filters import Filter from .objects import Track @@ -188,6 +188,10 @@ class Player(VoiceProtocol): async def _dispatch_event(self, data: dict): event_type = data.get("type") event: PomiceEvent = getattr(events, event_type)(data) + + if isinstance(event, TrackEndEvent): + self._current = None + event.dispatch(self._bot) if isinstance(event, TrackStartEvent): @@ -231,7 +235,15 @@ class Player(VoiceProtocol): async def destroy(self): """Disconnects a player and destroys the player instance.""" - await self.disconnect() + try: + await self.disconnect() + except AttributeError: + # 'NoneType' has no attribute '_get_voice_client_key' raised by self.cleanup() -> + # assume we're already disconnected and cleaned up + assert self.channel is None \ + and not self.is_connected \ + and self.guild.id not in self._node._players + await self._node.send(op="destroy", guildId=str(self.guild.id)) async def play(self, track: Track, *, start_position: int = 0) -> Track: