27 lines
929 B
Python
27 lines
929 B
Python
from __future__ import annotations
|
|
|
|
import discord
|
|
from discord.ext import commands
|
|
|
|
|
|
class GuildResolver:
|
|
"""Ustala kontekst serwera dla panelu webowego, który nie zna interakcji Discorda."""
|
|
|
|
def __init__(self, bot: commands.Bot):
|
|
self._bot = bot
|
|
|
|
def active_guild(self) -> discord.Guild | None:
|
|
"""Serwer z aktywnym połączeniem głosowym, a w razie jego braku - pierwszy znany."""
|
|
if self._bot.voice_clients:
|
|
return self._bot.voice_clients[0].guild
|
|
return self._bot.guilds[0] if self._bot.guilds else None
|
|
|
|
def guilds(self) -> list[discord.Guild]:
|
|
return list(self._bot.guilds)
|
|
|
|
def channel(self, channel_id: int) -> discord.abc.GuildChannel | None:
|
|
return self._bot.get_channel(channel_id)
|
|
|
|
def voice_client(self, guild_id: int) -> discord.VoiceClient | None:
|
|
return discord.utils.get(self._bot.voice_clients, guild__id=guild_id)
|