mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
from multiprocessing import Process
|
|
from typing import Dict, List, Union
|
|
from Config.Singleton import Singleton
|
|
from discord import Guild, Client, VoiceClient, Member
|
|
from Music.Player import Player
|
|
|
|
|
|
class PlayersController(Singleton):
|
|
def __init__(self, bot: Client = None) -> None:
|
|
if not super().created:
|
|
self.__bot: Client = bot
|
|
if bot is not None:
|
|
self.__players: Dict[Guild, Player] = self.__create_players()
|
|
|
|
def set_bot(self, bot: Client) -> None:
|
|
self.__bot: Client = bot
|
|
self.__players: Dict[Guild, Player] = self.__create_players()
|
|
|
|
def get_player(self, guild: Guild) -> Player:
|
|
if guild not in self.__players.keys():
|
|
player = Player(self.__bot, guild)
|
|
self.__players[guild] = player
|
|
|
|
return self.__players[guild]
|
|
|
|
def reset_player(self, guild: Guild) -> None:
|
|
if isinstance(guild, Guild):
|
|
player = Player(self.__bot, guild)
|
|
self.__players[guild] == player
|
|
|
|
def get_guild_voice(self, guild: Guild) -> Union[VoiceClient, None]:
|
|
if guild.voice_client is None:
|
|
return None
|
|
else:
|
|
return guild.voice_client
|
|
|
|
def create_player(self, guild: Guild) -> None:
|
|
player = Player(self.__bot, guild)
|
|
self.__players[guild] = player
|
|
print(f'Player for guild {guild.name} created')
|
|
|
|
def __create_players(self) -> Dict[Guild, Player]:
|
|
list_guilds: List[Guild] = self.__bot.guilds
|
|
players: Dict[Guild, Player] = {}
|
|
|
|
for guild in list_guilds:
|
|
player = Player(self.__bot, guild)
|
|
players[guild] = player
|
|
print(f'Player for guild {guild.name} created')
|
|
|
|
return players
|
|
|
|
def __get_guild_bot_member(self, guild: Guild) -> Member:
|
|
members: List[Member] = guild.members
|
|
for member in members:
|
|
if member.id == self.__bot.user.id:
|
|
return member
|