Version 5 with dataclasses and new vote system

This commit is contained in:
adator85
2024-08-17 13:32:11 +02:00
parent ab593b0ae6
commit deae79db57
8 changed files with 1074 additions and 383 deletions

View File

@@ -1,11 +1,10 @@
import threading
from core.irc import Irc
# Le module crée devra réspecter quelques conditions
# 1. Importer le module de configuration
# 2. Le nom de class devra toujours s'appeler comme le module exemple => nom de class Dktmb | nom du module mod_dktmb
# 3. la fonction __init__ devra toujours avoir les parametres suivant (self, irc:object)
# 1 . Créer la variable irc dans le module
# 1 . Créer la variable Irc dans le module
# 2 . Récuperer la configuration dans une variable
# 3 . Définir et enregistrer les nouvelles commandes
# 4. une fonction _hcmds(self, user:str, cmd: list) devra toujours etre crée.
@@ -13,37 +12,59 @@ from core.irc import Irc
class Test():
def __init__(self, ircInstance:Irc) -> None:
print(f'Module {self.__class__.__name__} loaded ...')
self.irc = ircInstance # Ajouter l'object mod_irc a la classe
# Add Irc Object to the module
self.Irc = ircInstance
self.config = ircInstance.Config # Ajouter la configuration a la classe
# Add Global Configuration to the module
self.Config = ircInstance.Config
# Add Base object to the module
self.Base = ircInstance.Base
# Add logs object to the module
self.Logs = ircInstance.Base.logs
# Add User object to the module
self.User = ircInstance.User
# Add Channel object to the module
self.Channel = ircInstance.Channel
# Créer les nouvelles commandes du module
self.commands = ['test']
self.commands_level = {
0: ['test'],
1: ['test_level_1']
}
self.__set_commands(self.commands) # Enrigstrer les nouvelles commandes dans le code
# Init the module
self.__init_module()
self.core = ircInstance.Base # Instance du module Base
# Log the module
self.Logs.debug(f'Module {self.__class__.__name__} loaded ...')
self.session = '' # Instancier une session pour la base de données
self.__create_db('mod_test') # Créer la base de données si necessaire
def __init_module(self) -> None:
def __set_commands(self, commands:list) -> None:
"""Rajoute les commandes du module au programme principal
self.__set_commands(self.commands_level)
self.__create_tables()
return None
def __set_commands(self, commands:dict[int, list[str]]) -> None:
"""### Rajoute les commandes du module au programme principal
Args:
commands (list): Liste des commandes du module
Returns:
None: Aucun retour attendu
"""
for command in commands:
self.irc.commands.append(command)
for level, com in commands.items():
for c in commands[level]:
if not c in self.Irc.commands:
self.Irc.commands_level[level].append(c)
self.Irc.commands.append(c)
return True
return None
def __create_db(self, db_name:str) -> None:
def __create_tables(self) -> None:
"""Methode qui va créer la base de donnée si elle n'existe pas.
Une Session unique pour cette classe sera crée, qui sera utilisé dans cette classe / module
Args:
@@ -52,36 +73,36 @@ class Test():
Returns:
None: Aucun retour n'es attendu
"""
db_directory = self.core.MODS_DB_PATH
self.session = self.core.db_init(db_directory, db_name)
table_logs = '''CREATE TABLE IF NOT EXISTS logs (
table_logs = '''CREATE TABLE IF NOT EXISTS test_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datetime TEXT,
server_msg TEXT
)
'''
self.core.db_execute_query(self.session, table_logs)
self.Base.db_execute_query(table_logs)
return None
def unload(self) -> None:
return None
def _hcmds(self, user:str, cmd: list) -> None:
def cmd(self, data:list) -> None:
return None
command = cmd[0].lower()
def _hcmds(self, user:str, cmd: list, fullcmd: list = []) -> None:
command = str(cmd[0]).lower()
dnickname = self.Config.SERVICE_NICKNAME
fromuser = user
match command:
case 'test':
try:
user_action = cmd[1]
self.irc.send2socket(f'PRIVMSG #webmail Je vais voicer {user}')
self.irc.send2socket(f'MODE #webmail +v {user_action}')
self.core.create_log(f"MODE +v sur {user_action}")
self.Irc.send2socket(f":{dnickname} NOTICE {fromuser} : test command ready ...")
self.Logs.debug(f"Test logs ready")
except KeyError as ke:
self.core.create_log(f"Key Error : {ke}")
self.Logs.error(f"Key Error : {ke}")