mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 19:24:23 +00:00
Update Votekick module! following the same structure as other modules
This commit is contained in:
98
mods/votekick/votekick_manager.py
Normal file
98
mods/votekick/votekick_manager.py
Normal file
@@ -0,0 +1,98 @@
|
||||
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
|
||||
Reference in New Issue
Block a user