Files
2022-11-12 22:43:03 +01:00

57 lines
1.7 KiB
Python

from typing import TYPE_CHECKING
from aioredis.client import Redis
from discord import Embed
from discord.ext import commands
from discord.ext.commands.errors import CommandInvokeError
from lavalink.models import DefaultPlayer
from tunebot.context import ContextLike
from tunebot.redis import RedisAutoJoin
from tunebot.redis import RedisPlaylistSource
if TYPE_CHECKING:
from bot import TuneBot
from tunebot import PlaylistSource
from tunebot import AutoJoin
from utils.classes import BaseCog
class CustomContext(commands.Context):
bot: "TuneBot"
cog: "BaseCog"
@property
def redis(self) -> Redis:
return self.bot._redis_client
@property
def player(self) -> DefaultPlayer:
return self.bot.lavalink.player_manager.get(self.guild.id)
def create_embed(self) -> Embed:
bot: TuneBot = self.bot
color = bot.colors["embed"]
avatar = None
if avatar_asset := self.author.avatar:
avatar = avatar_asset.with_static_format("jpeg")
embed = Embed(color=color)
embed.set_footer(text=f"Requested by: {self.author}", icon_url=avatar)
return embed
@property
def playlist_source(self) -> "PlaylistSource":
if not hasattr(self, "_playlist_source"):
ctx = ContextLike.from_discord_context(self)
self._playlist_source = self.bot.playlist_source_context(ctx)
return self._playlist_source
@property
def autojoin(self) -> "AutoJoin":
if not hasattr(self, "_autojoin"):
ctx = ContextLike.from_discord_context(self)
self._autojoin = self.bot.autojoin_context(ctx)
return self._autojoin