From d9137f6b2923d7fd6a1f7a028d3d6dd98cbcf60f Mon Sep 17 00:00:00 2001 From: cloudwithax Date: Thu, 9 Mar 2023 23:30:55 -0500 Subject: [PATCH] use own abstract event loop to execute tasks --- pomice/events.py | 2 +- pomice/pool.py | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pomice/events.py b/pomice/events.py index adf8669..1f8f3d2 100644 --- a/pomice/events.py +++ b/pomice/events.py @@ -1,5 +1,5 @@ from __future__ import annotations -from discord import Client +from discord import Client, Guild from discord.ext import commands from .pool import NodePool diff --git a/pomice/pool.py b/pomice/pool.py index 82412d1..8fca43b 100644 --- a/pomice/pool.py +++ b/pomice/pool.py @@ -58,6 +58,7 @@ class Node: identifier: str, secure: bool = False, heartbeat: int = 30, + loop: Optional[asyncio.AbstractEventLoop] = None, session: Optional[aiohttp.ClientSession] = None, spotify_client_id: Optional[str] = None, spotify_client_secret: Optional[str] = None, @@ -74,7 +75,7 @@ class Node: self._heartbeat: int = heartbeat self._secure: bool = secure self.fallback: bool = fallback - self._version: str = None + self._websocket_uri: str = f"{'wss' if self._secure else 'ws'}://{self._host}:{self._port}" @@ -83,9 +84,11 @@ class Node: self._session: Optional[aiohttp.ClientSession] = session self._websocket = None self._task: asyncio.Task = None + self._loop: asyncio.AbstractEventLoop = loop or asyncio.get_event_loop() self._session_id: str = None self._available: bool = False + self._version: str = None self._route_planner = RoutePlanner(self) @@ -195,9 +198,9 @@ class Node: retry = backoff.delay() await asyncio.sleep(retry) if not self.is_connected: - self._bot.loop.create_task(self.connect()) + self._loop.create_task(self.connect()) else: - self._bot.loop.create_task(self._handle_payload(msg.json())) + self._loop.create_task(self._handle_payload(msg.json())) async def _handle_payload(self, data: dict): op = data.get("op", None) @@ -291,7 +294,7 @@ class Node: ) if not self._task: - self._task = self._bot.loop.create_task(self._listen()) + self._task = self._loop.create_task(self._listen()) self._available = True return self @@ -689,6 +692,7 @@ class NodePool: identifier: str, secure: bool = False, heartbeat: int = 30, + loop: Optional[asyncio.AbstractEventLoop] = None, spotify_client_id: Optional[str] = None, spotify_client_secret: Optional[str] = None, session: Optional[aiohttp.ClientSession] = None, @@ -705,7 +709,7 @@ class NodePool: node = Node( pool=cls, bot=bot, host=host, port=port, password=password, identifier=identifier, secure=secure, heartbeat=heartbeat, - spotify_client_id=spotify_client_id, + loop=loop, spotify_client_id=spotify_client_id, session=session, spotify_client_secret=spotify_client_secret, apple_music=apple_music, fallback=fallback )