diff --git a/README.md b/README.md index ae744a6..dc1f094 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ knockoff of genai basically :p -not that hard to setup just modify the .env and install packages and youre rollin -maybe also create custom commands (you put them in the cog folder its just drap and drop) + Special thanks to [Charlie's Computers](https://github.com/PowerPCFan) for being the only one I know of that's hosting Goober 24/7 +[Goober Central](https://github.com/whatdidyouexpect/goober-central) + ![the goober](https://goober.whatdidyouexpect.eu/imgs/goobs/goobs.png) diff --git a/assets/locales/en.json b/assets/locales/en.json index 53e9dd5..a91a1e1 100644 --- a/assets/locales/en.json +++ b/assets/locales/en.json @@ -17,7 +17,7 @@ "memory_file_valid": "The memory.json file is valid!", "file_aint_uft8": "File is not valid UTF-8 text. Might be binary or corrupted.", "psutil_not_installed": "Memory check skipped.", - "not_cloned": "Goober is not cloned! Please clone it from Git.", + "not_cloned": "Goober is not cloned! Please clone it from GitHub.", "checks_disabled": "Checks are disabled!", "unhandled_exception": "An unhandled exception occurred. Please report this issue on GitHub.", "active_users:": "Active users:", diff --git a/assets/locales/fr.json b/assets/locales/fr.json new file mode 100644 index 0000000..572d2f4 --- /dev/null +++ b/assets/locales/fr.json @@ -0,0 +1,130 @@ +{ + "checks_disabled": "Les vérifications sont désactivées !", + "unhandled_exception": "Une exception non gérée est survenue. Merci de rapporter ce problème sur GitHub.", + "active_users:": "Utilisateurs actifs :", + "spacy_initialized": "spaCy et spacytextblob sont prêts.", + "spacy_model_not_found": "Le modèle spaCy est introuvable ! Téléchargement en cours...", + "env_file_not_found": "Le fichier .env est introuvable ! Créez-en un avec les variables nécessaires.", + "error_fetching_active_users": "Erreur lors de la récupération des utilisateurs actifs : {error}", + "error_sending_alive_ping": "Erreur lors de l’envoi du ping actif : {error}", + "already_started": "J’ai déjà démarré ! Je ne me mets pas à jour...", + "please_restart": "Redémarre, stp !", + "local_ahead": "Local {remote}/{branch} est en avance ou à jour. Pas de mise à jour...", + "remote_ahead": "Remote {remote}/{branch} est en avance. Mise à jour en cours...", + "cant_find_local_version": "Je ne trouve pas la variable local_version ! Ou elle a été modifiée et ce n’est pas un entier !", + "running_prestart_checks": "Exécution des vérifications préalables au démarrage...", + "continuing_in_seconds": "Reprise dans {seconds} secondes... Appuie sur une touche pour passer.", + "missing_requests_psutil": "requests et psutil manquants ! Installe-les avec pip : `pip install requests psutil`", + "requirements_not_found": "requirements.txt introuvable à {path}, a-t-il été modifié ?", + "warning_failed_parse_imports": "Avertissement : Échec du parsing des imports depuis {filename} : {error}", + "cogs_dir_not_found": "Répertoire des cogs introuvable à {path}, scan ignoré.", + "std_lib_local_skipped": "LIB STD / LOCAL {package} (vérification sautée)", + "ok_installed": "OK", + "missing_package": "MANQUANT", + "missing_package2": "n’est pas installé", + "missing_packages_detected": "Packages manquants détectés :", + "telling_goober_central": "Envoi à goober central à {url}", + "failed_to_contact": "Impossible de contacter {url} : {error}", + "all_requirements_satisfied": "Toutes les dépendances sont satisfaites.", + "ping_to": "Ping vers {host} : {latency} ms", + "high_latency": "Latence élevée détectée ! Tu pourrais avoir des délais de réponse.", + "could_not_parse_latency": "Impossible d’analyser la latence.", + "ping_failed": "Ping vers {host} échoué.", + "error_running_ping": "Erreur lors du ping : {error}", + "memory_usage": "Utilisation mémoire : {used} Go / {total} Go ({percent}%)", + "memory_above_90": "Usage mémoire au-dessus de 90% ({percent}%). Pense à libérer de la mémoire.", + "total_memory": "Mémoire totale : {total} Go", + "used_memory": "Mémoire utilisée : {used} Go", + "low_free_memory": "Mémoire libre faible détectée ! Seulement {free} Go disponibles.", + "measuring_cpu": "Mesure de l’usage CPU par cœur...", + "core_usage": "Cœur {idx} : [{bar}] {usage}%", + "total_cpu_usage": "Usage total CPU : {usage}%", + "high_avg_cpu": "Moyenne CPU élevée : {usage}%", + "really_high_cpu": "Charge CPU vraiment élevée ! Le système pourrait ralentir ou planter.", + "memory_file": "Fichier mémoire : {size} Mo", + "memory_file_large": "Fichier mémoire de 1 Go ou plus, pense à le nettoyer pour libérer de l’espace.", + "memory_file_corrupted": "Fichier mémoire corrompu ! Erreur JSON : {error}", + "consider_backup_memory": "Pense à sauvegarder et recréer le fichier mémoire.", + "memory_file_encoding": "Problèmes d’encodage du fichier mémoire : {error}", + "error_reading_memory": "Erreur lecture fichier mémoire : {error}", + "memory_file_not_found": "Fichier mémoire introuvable.", + "modification_warning": "Goober a été modifié ! Toutes les modifications seront perdues lors d'une mise à jour !", + "reported_version": "Version rapportée :", + "current_hash": "Hachage actuel :", + "not_found": "n'est pas trouvé !", + "version_error": "Impossible de récupérer les informations de version. Code d'état", + "loaded_cog": "Cog chargé :", + "loaded_cog2": "Module chargé :", + "cog_fail": "Échec du chargement du cog :", + "cog_fail2": "Échec du chargement du module :", + "no_model": "Aucun modèle Markov sauvegardé trouvé. Démarrage à partir de zéro.", + "folder_created": "Dossier '{folder_name}' créé.", + "folder_exists": "Le dossier '{folder_name}' existe déjà. Ignorons...", + "logged_in": "Connecté en tant que", + "synced_commands": "Synchronisé", + "synced_commands2": "commandes !", + "fail_commands_sync": "Échec de la synchronisation des commandes :", + "started": "{name} a démarré !", + "name_check": "Erreur lors de la vérification de la disponibilité du nom :", + "name_taken": "Le nom est déjà pris. Veuillez choisir un autre nom.", + "name_check2": "Erreur lors de la vérification de la disponibilité du nom :", + "add_token": "Token : {token}\nVeuillez ajouter ce token à votre fichier .env comme", + "token_exists": "Le token existe déjà dans .env. Utilisation du token existant.", + "registration_error": "Erreur lors de l'enregistrement :", + "version_backup": "Sauvegarde créée :", + "backup_error": "Erreur : {LOCAL_VERSION_FILE} introuvable pour la sauvegarde.", + "model_loaded": "Modèle Markov chargé depuis", + "fetch_update_fail": "Impossible de récupérer les informations de mise à jour.", + "invalid_server": "Erreur : Informations de version invalides reçues du serveur.", + "goober_server_alert": "Alerte du serveur Goober central !\n", + "new_version": "Nouvelle version disponible : {latest_version} (Actuelle : {local_version})", + "changelog": "Consultez {VERSION_URL}/goob/changes.txt pour voir les modifications\n\n", + "invalid_version": "La version : {local_version} n'est pas valide !", + "invalid_version2": "Si c'est intentionnel, ignorez ce message. Sinon, appuyez sur Y pour récupérer une version valide depuis le serveur, quelle que soit la version actuelle de Goober.", + "invalid_version3": "La version actuelle sera sauvegardée dans current_version.bak..", + "input": "(Y ou toute autre touche pour ignorer...)", + "modification_ignored": "Vous avez modifié", + "modification_ignored2": "IGNOREWARNING est désactivé..", + "latest_version": "Vous utilisez la dernière version :", + "latest_version2": "Consultez {VERSION_URL}/goob/changes.txt pour voir les modifications", + "pinging_disabled": "Le ping est désactivé ! Je ne préviens pas le serveur que je suis en ligne...", + "goober_ping_success": "Connecté à Goober central en tant que {NAME}", + "goober_ping_fail": "Échec de l'envoi des données. Le serveur a retourné le code d'état :", + "goober_ping_fail2": "Une erreur est survenue lors de l'envoi des données :", + "sentence_positivity": "La positivité de la phrase est :", + "command_edit_fail": "Échec de la modification du message :", + "command_desc_retrain": "Réentraîne manuellement le modèle Markov.", + "command_markov_retrain": "Réentraînement du modèle Markov... Veuillez patienter.", + "command_markov_memory_not_found": "Erreur : fichier de mémoire introuvable !", + "command_markov_memory_is_corrupt": "Erreur : le fichier de mémoire est corrompu !", + "command_markov_retraining": "Traitement de {processed_data}/{data_size} points de données...", + "command_markov_retrain_successful": "Modèle Markov réentraîné avec succès en utilisant {data_size} points de données !", + "command_desc_talk": "parle et tout ça", + "command_talk_insufficent_text": "Je dois apprendre plus de messages avant de pouvoir parler.", + "command_talk_generation_fail": "Je n'ai rien à dire pour le moment !", + "command_desc_help": "aide", + "command_help_embed_title": "Aide du bot", + "command_help_embed_desc": "Liste des commandes regroupées par catégorie.", + "command_help_categories_general": "Général", + "command_help_categories_admin": "Administration", + "command_help_categories_custom": "Commandes personnalisées", + "command_ran": "Info : {message.author.name} a exécuté {message.content}", + "command_ran_s": "Info : {interaction.user} a exécuté ", + "command_desc_ping": "ping", + "command_ping_embed_desc": "Latence du bot :", + "command_ping_footer": "Demandé par", + "command_about_desc": "à propos", + "command_about_embed_title": "À propos de moi", + "command_about_embed_field1": "Nom", + "command_about_embed_field2name": "Version", + "command_about_embed_field2value": "Locale : {local_version} \nDernière : {latest_version}", + "command_desc_stats": "statistiques", + "command_stats_embed_title": "Statistiques du bot", + "command_stats_embed_desc": "Données sur la mémoire du bot.", + "command_stats_embed_field1name": "Statistiques du fichier", + "command_stats_embed_field1value": "Taille : {file_size} octets\nLignes : {line_count}", + "command_stats_embed_field2name": "Version", + "command_stats_embed_field2value": "Locale : {local_version} \nDernière : {latest_version}", + "command_stats_embed_field3name": "Informations variables", + "command_stats_embed_field3value": "Nom : {NAME} \nPréfixe : {PREFIX} \nID du propriétaire : {ownerid}\nLigne de ping : {PING_LINE} \nPartage de mémoire activé : {showmemenabled} \nEntraînement utilisateur activé : {USERTRAIN_ENABLED} \nChanson : {song} \nTexte de démarrage : ```{splashtext}```" +} \ No newline at end of file diff --git a/assets/locales/it.json b/assets/locales/it.json index 972088d..0ae6413 100644 --- a/assets/locales/it.json +++ b/assets/locales/it.json @@ -17,7 +17,7 @@ "memory_file_valid": "Il file JSON è valido!", "file_aint_utf8": "Il file non è un UTF-8 valido. Forse è binario?", "psutil_not_installed": "Controllo memoria saltato.", - "not_cloned": "Goober non è stato clonato! Clonalo da Git.", + "not_cloned": "Goober non è stato clonato! Clonalo da GitHub.", "checks_disabled": "I controlli sono disabilitati!", "unhandled_exception": "Si è verificata un'eccezione non gestita. Segnala questo problema su GitHub, per favore.", "active_users:": "Utenti attivi:", diff --git a/bot.py b/bot.py index 12d3d87..a774aa0 100644 --- a/bot.py +++ b/bot.py @@ -7,7 +7,6 @@ import traceback import subprocess import tempfile import shutil -import psutil import asyncio import platform import sys @@ -220,12 +219,6 @@ async def talk(ctx: commands.Context, sentence_size: int = 5) -> None: else: await send_message(ctx, f"{(_('command_talk_generation_fail'))}") -@bot.hybrid_command(description=f"RAM") -async def ramusage(ctx): - process = psutil.Process(os.getpid()) - mem = process.memory_info().rss - await send_message(ctx, f"Total memory used: {mem / 1024 / 1024:.2f} MB") - # Command: Generate an image @bot.hybrid_command(description=f"{(_('command_desc_help'))}") async def impact(ctx: commands.Context, text: Optional[str] = None) -> None: diff --git a/modules/logger.py b/modules/logger.py index 79d9029..76f5f10 100644 --- a/modules/logger.py +++ b/modules/logger.py @@ -1,5 +1,4 @@ import logging -import re from modules.globalvars import * class GooberFormatter(logging.Formatter): @@ -17,14 +16,10 @@ class GooberFormatter(logging.Formatter): } def format(self, record: logging.LogRecord): - ansiescape = re.compile(r'\x1B[@-_][0-?]*[ -/]*[@-~]') if self.colors: log_fmt = self.FORMATS.get(record.levelno) # Add colors else: log_fmt = self._format # Just use the default format formatter = logging.Formatter(log_fmt, datefmt="%m/%d/%y %H:%M:%S") - formatted = formatter.format(record) - if not self.colors: - formatted = ansiescape.sub('', formatted) - return formatted + return formatter.format(record)