mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 19:24:23 +00:00
99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
from typing import TYPE_CHECKING, Optional
|
|
from mods.votekick.schemas import VoteChannelModel
|
|
|
|
if TYPE_CHECKING:
|
|
from mods.votekick.mod_votekick import Votekick
|
|
|
|
class VotekickManager:
|
|
|
|
VOTE_CHANNEL_DB:list[VoteChannelModel] = []
|
|
|
|
def __init__(self, uplink: 'Votekick'):
|
|
self.uplink = uplink
|
|
self.Logs = uplink.Logs
|
|
self.Utils = uplink.Utils
|
|
|
|
def activate_new_channel(self, channel_name: str) -> bool:
|
|
"""Activate a new channel in the votekick systeme
|
|
|
|
Args:
|
|
channel_name (str): The channel name you want to activate
|
|
|
|
Returns:
|
|
bool: True if it was activated
|
|
"""
|
|
votec = self.get_vote_channel_model(channel_name)
|
|
|
|
if votec is None:
|
|
self.VOTE_CHANNEL_DB.append(
|
|
VoteChannelModel(
|
|
channel_name=channel_name,
|
|
target_user='',
|
|
voter_users=[],
|
|
vote_for=0,
|
|
vote_against=0
|
|
)
|
|
)
|
|
self.Logs.debug(f"[VOTEKICK MANAGER] {channel_name} has been activated.")
|
|
return True
|
|
|
|
return False
|
|
|
|
def get_vote_channel_model(self, channel_name: str) -> Optional[VoteChannelModel]:
|
|
"""Get Vote Channel Object model
|
|
|
|
Args:
|
|
channel_name (str): The channel name you want to activate
|
|
|
|
Returns:
|
|
(VoteChannelModel | None): The VoteChannelModel if exist
|
|
"""
|
|
for vote in self.VOTE_CHANNEL_DB:
|
|
if vote.channel_name.lower() == channel_name.lower():
|
|
self.Logs.debug(f"[VOTEKICK MANAGER] {channel_name} has been found in the VOTE_CHANNEL_DB")
|
|
return vote
|
|
|
|
return None
|
|
|
|
def drop_vote_channel_model(self, channel_name: str) -> bool:
|
|
"""Drop a channel from the votekick system.
|
|
|
|
Args:
|
|
channel_name (str): The channel name you want to drop
|
|
|
|
Returns:
|
|
bool: True if the channel has been droped.
|
|
"""
|
|
votec = self.get_vote_channel_model(channel_name)
|
|
|
|
if votec:
|
|
self.VOTE_CHANNEL_DB.remove(votec)
|
|
self.Logs.debug(f"[VOTEKICK MANAGER] {channel_name} has been removed from the VOTE_CHANNEL_DB")
|
|
return True
|
|
|
|
return False
|
|
|
|
def is_vote_ongoing(self, channel_name: str) -> bool:
|
|
"""Check if there is an angoing vote on the channel provided
|
|
|
|
Args:
|
|
channel_name (str): The channel name to check
|
|
|
|
Returns:
|
|
bool: True if there is an ongoing vote on the channel provided.
|
|
"""
|
|
|
|
votec = self.get_vote_channel_model(channel_name)
|
|
|
|
if votec is None:
|
|
self.Logs.debug(f"[VOTEKICK MANAGER] {channel_name} is not activated!")
|
|
return False
|
|
|
|
if votec.target_user:
|
|
self.Logs.debug(f'[VOTEKICK MANAGER] A vote is ongoing on {channel_name}')
|
|
return True
|
|
|
|
self.Logs.debug(f'[VOTEKICK MANAGER] {channel_name} is activated but there is no ongoing vote!')
|
|
|
|
return False
|