mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
[Audio] More robust startup and unload (#2118)
* More robust cleanup for audio and streams Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Remove copied code from streams Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
This commit is contained in:
parent
51c83d958c
commit
df922a0e3e
@ -52,6 +52,6 @@ async def setup(bot: commands.Bot):
|
||||
await maybe_download_lavalink(bot.loop, cog)
|
||||
await start_lavalink_server(bot.loop)
|
||||
|
||||
await cog.initialize()
|
||||
|
||||
bot.add_cog(cog)
|
||||
bot.loop.create_task(cog.disconnect_timer())
|
||||
bot.loop.create_task(cog.init_config())
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import contextlib
|
||||
|
||||
import aiohttp
|
||||
import asyncio
|
||||
import datetime
|
||||
@ -61,8 +63,10 @@ class Audio:
|
||||
self.config.register_global(**default_global)
|
||||
self.skip_votes = {}
|
||||
self.session = aiohttp.ClientSession()
|
||||
self._disconnect_task = None
|
||||
self._cleaned_up = False
|
||||
|
||||
async def init_config(self):
|
||||
async def initialize(self):
|
||||
host = await self.config.host()
|
||||
password = await self.config.password()
|
||||
rest_port = await self.config.rest_port()
|
||||
@ -78,6 +82,8 @@ class Audio:
|
||||
)
|
||||
lavalink.register_event_listener(self.event_handler)
|
||||
|
||||
self._disconnect_task = self.bot.loop.create_task(self.disconnect_timer())
|
||||
|
||||
async def event_handler(self, player, event_type, extra):
|
||||
notify = await self.config.guild(player.channel.guild).notify()
|
||||
status = await self.config.status()
|
||||
@ -2267,7 +2273,7 @@ class Audio:
|
||||
async def disconnect_timer(self):
|
||||
stop_times = {}
|
||||
|
||||
while self == self.bot.get_cog("Audio"):
|
||||
while True:
|
||||
for p in lavalink.players:
|
||||
server = p.channel.guild
|
||||
|
||||
@ -2449,7 +2455,13 @@ class Audio:
|
||||
pass
|
||||
|
||||
def __unload(self):
|
||||
if not self._cleaned_up:
|
||||
self.session.detach()
|
||||
if self._disconnect_task:
|
||||
self._disconnect_task.cancel()
|
||||
lavalink.unregister_event_listener(self.event_handler)
|
||||
self.bot.loop.create_task(lavalink.close())
|
||||
shutdown_lavalink_server()
|
||||
self._cleaned_up = True
|
||||
|
||||
__del__ = __unload
|
||||
|
||||
@ -666,3 +666,5 @@ class Streams:
|
||||
def __unload(self):
|
||||
if self.task:
|
||||
self.task.cancel()
|
||||
|
||||
__del__ = __unload
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user