Audio Fixes (#4492)

* handles #4491

* add typing indicators to audio playlists commands like discussed with aika.

* recheck perms upon change of token to avoid needing a reload.

* Ensure the player lock is always released... on rewrite to this as a callback to the task.

* ffs

* resolves#4495

* missed one

* aaaaaaaaa

* fix https://canary.discord.com/channels/133049272517001216/387398816317440000/766711707921678396

* some tweaks

* Clear errors to users around YouTube Quota
This commit is contained in:
Draper
2020-10-20 17:57:02 +01:00
committed by GitHub
parent 335e2a7c25
commit e31196d19f
39 changed files with 1255 additions and 1014 deletions

View File

@@ -2,6 +2,7 @@ import asyncio
import datetime
import logging
import time
from pathlib import Path
from typing import Optional
@@ -9,6 +10,7 @@ import discord
import lavalink
from redbot.core import commands
from redbot.core.i18n import Translator
from ...apis.playlist_interface import Playlist, delete_playlist, get_playlist
from ...audio_logging import debug_exc_log
@@ -17,6 +19,7 @@ from ..abc import MixinMeta
from ..cog_utils import CompositeMetaClass
log = logging.getLogger("red.cogs.Audio.cog.Events.audio")
_ = Translator("Audio", Path(__file__))
class AudioEvents(MixinMeta, metaclass=CompositeMetaClass):

View File

@@ -13,15 +13,16 @@ import lavalink
from aiohttp import ClientConnectorError
from discord.ext.commands import CheckFailure
from redbot.core import commands
from redbot.core.i18n import Translator
from redbot.core.utils.chat_formatting import box, humanize_list
from ...audio_logging import debug_exc_log
from ...errors import TrackEnqueueError
from ..abc import MixinMeta
from ..cog_utils import HUMANIZED_PERM, CompositeMetaClass, _
from ..cog_utils import HUMANIZED_PERM, CompositeMetaClass
log = logging.getLogger("red.cogs.Audio.cog.Events.dpy")
_ = Translator("Audio", Path(__file__))
RE_CONVERSION: Final[Pattern] = re.compile('Converting to "(.*)" failed for parameter "(.*)".')

View File

@@ -1,15 +1,18 @@
import asyncio
import contextlib
import logging
from pathlib import Path
import discord
import lavalink
from redbot.core.i18n import Translator
from ...errors import DatabaseError, TrackEnqueueError
from ..abc import MixinMeta
from ..cog_utils import CompositeMetaClass, _
from ..cog_utils import CompositeMetaClass
log = logging.getLogger("red.cogs.Audio.cog.Events.lavalink")
_ = Translator("Audio", Path(__file__))
class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
@@ -174,6 +177,7 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
player.current = None
if not guild_id:
return
guild_id = int(guild_id)
self._error_counter.setdefault(guild_id, 0)
if guild_id not in self._error_counter:
self._error_counter[guild_id] = 0

View File

@@ -1,12 +1,15 @@
import asyncio
import logging
from pathlib import Path
from typing import Literal, Mapping
from redbot.core import commands
from redbot.core.i18n import Translator
from ..abc import MixinMeta
from ..cog_utils import CompositeMetaClass
log = logging.getLogger("red.cogs.Audio.cog.Events.red")
_ = Translator("Audio", Path(__file__))
class RedEvents(MixinMeta, metaclass=CompositeMetaClass):
@@ -15,11 +18,11 @@ class RedEvents(MixinMeta, metaclass=CompositeMetaClass):
self, service_name: str, api_tokens: Mapping[str, str]
) -> None:
if service_name == "youtube":
self.api_interface.youtube_api.update_token(api_tokens)
await self.api_interface.youtube_api.update_token(api_tokens)
elif service_name == "spotify":
self.api_interface.spotify_api.update_token(api_tokens)
await self.api_interface.spotify_api.update_token(api_tokens)
elif service_name == "audiodb":
self.api_interface.global_cache_api.update_token(api_tokens)
await self.api_interface.global_cache_api.update_token(api_tokens)
async def red_delete_data_for_user(
self,