lgrez.config
(variables globales)¶
lg-rez / Variables globales
Personalisation de différents paramètres et accès global
- lgrez.config.guild¶
Le serveur Discord sur lequel se déroule la partie.
Lève une
NotReadyError
avant l’appel deLGBot.on_ready()
.- Type
- lgrez.config.bot¶
Le bot en activité.
Lève une
NotReadyError
avant l’appel àLGBot.run()
.- Type
- lgrez.config.loop¶
La boucle asynchrone d’évènement utilisée par le bot et les tâches planifiées (raccourci pour pour
config.bot.loop
).Lève une
NotReadyError
avant l’appel deLGBot.on_ready()
.
- lgrez.config.engine¶
Le moteur de connexion à la base de données.
Lève une
NotReadyError
avant l’appel àbdd.connect()
(inclus dansLGBot.run()
).
- lgrez.config.session¶
La session de transaction avec la base de données.
Lève une
NotReadyError
avant l’appel àbdd.connect()
(inclus dansLGBot.run()
).
- lgrez.config.webhook¶
Le webhook utilisé par les tâches planifiées. Poste dans
config.Channel.logs
.Lève une
NotReadyError
avant l’appel deLGBot.on_ready()
.- Type
- lgrez.config.server_structure = {'afk_channel': None, 'afk_timeout': 300, 'base_role': '@everyone', 'categories': {'boudoirs': {'channels': {'about': {'name': 'information-boudoirs', 'overwrites': {'@everyone': {'read_messages': False}, 'joueur_en_vie': {'read_messages': True, 'send_messages': False}, 'joueur_mort': {'read_messages': True}, 'observateur': {'read_messages': True}}, 'topic': "Oui c'est un nom à la con, non t'as pas le droit de le dire."}}, 'name': 'BOUDOIRS', 'overwrites': {'@everyone': {'read_messages': False}, 'observateur': {'read_messages': True}}, 'voice_channels': {}}, 'conversations_camps': {'channels': {'enfer': {'name': 'enfer', 'overwrites': {'@everyone': {'read_messages': False}, 'joueur_mort': {'read_messages': True, 'send_messages': True}, 'observateur': {'read_messages': True}}, 'topic': 'Oh bah non, vous êtes morts'}, 'exorcistes_1': {'name': 'prétoire-des-exorcistes', 'overwrites': {}, 'topic': None}, 'exorcistes_2': {'name': 'aréopage-des-exorcistes', 'overwrites': {}, 'topic': None}, 'loups': {'name': 'tanière-des-loups', 'overwrites': {}, 'topic': 'Aouuuuuuuuu'}}, 'name': 'CONVERSATIONS CAMPS', 'overwrites': {'@everyone': {'read_messages': False}, 'observateur': {'read_messages': True}}, 'voice_channels': {}}, 'informations': {'channels': {'bienvenue': {'name': 'bienvenue', 'overwrites': {'@everyone': {'read_messages': True, 'send_messages': False}}, 'topic': 'Bonjour à tous !'}, 'meta': {'name': 'meta', 'overwrites': {'@everyone': {'send_messages': None}}, 'topic': 'Salon pour parler de tout ce qui est extérieur au jeu : le serveur, le bot... (mais pas de spam)'}, 'regles': {'name': 'règles', 'overwrites': {}, 'topic': 'À lire !'}, 'roles': {'name': 'rôles', 'overwrites': {}, 'topic': 'Liste des rôles (accessible en faisant !roles)'}}, 'name': 'INFORMATIONS', 'overwrites': {'@everyone': {'send_messages': False}}, 'voice_channels': {}}, 'mjs_home': {'channels': {'general': {'name': 'général', 'overwrites': {}, 'topic': 'Le QG des Moussaillons Joyeux'}, 'ideas': {'name': 'boîte-à-idées', 'overwrites': {}, 'topic': "Toutes les possibilités d'amélioration pour le futur"}, 'logs': {'name': 'logs', 'overwrites': {}, 'topic': 'Logs techniques du bot'}, 'lore': {'name': 'le-lore', 'overwrites': {}, 'topic': 'Ici on raconte des histoires'}, 'prices': {'name': 'prix', 'overwrites': {}, 'topic': 'Une remise des quoi ???'}, 'resolution': {'name': 'résolution', 'overwrites': {}, 'topic': 'Alors, qui va mourir ce soir ?'}, 'rules_details': {'name': 'titillage-de-règles', 'overwrites': {}, 'topic': 'OK, mais si un mage mage un mage qui mage un mage ?'}, 'spam_for_mjs': {'name': 'spam-mais-pour-les-mjs', 'overwrites': {}, 'topic': 'Tout est dans le titre'}, 'tech': {'name': 'technique', 'overwrites': {}, 'topic': 'Pour lancer toutes les commandes'}}, 'name': 'MANOIR DES MJS 🏰', 'overwrites': {'@everyone': {'read_messages': False}, 'observateur': {'read_messages': True}}, 'voice_channels': {'general': {'name': 'Général', 'overwrites': {}}, 'tech': {'name': 'Tech', 'overwrites': {}}}}, 'old_boudoirs': {'channels': {}, 'name': 'CIMETIÈRE DES BOUDOIRS', 'overwrites': {'@everyone': {'read_messages': False}, 'observateur': {'read_messages': True}}, 'voice_channels': {}}, 'private_chan': {'channels': {}, 'name': 'CONVERSATION BOT', 'overwrites': {'@everyone': {'read_messages': False}, 'observateur': {'read_messages': True}}, 'voice_channels': {}}, 'village_place': {'channels': {'annonces': {'name': 'annonces', 'overwrites': {'@everyone': {'send_messages': False}}, 'topic': 'Pour tout savoir sur les morts, les informations importantes et la partie en général !'}, 'debats': {'name': 'débats', 'overwrites': {}, 'topic': 'Salon principal, pour parler du jeu !'}, 'haros': {'name': 'haros', 'overwrites': {'@everyone': {'send_messages': False}}, 'topic': "Postez dans ce chan en utilisant !haro / !candid pendant les horaires d'ouvertures du vote ! Seuls les joueurs ayant été accusés peuvent être tués au vote."}, 'spam': {'name': 'spam', 'overwrites': {}, 'topic': 'SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPMA SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM'}}, 'name': 'PLACE DU VILLAGE', 'overwrites': {}, 'voice_channels': {}}}, 'default_notifications': 'only_mentions', 'emojis': {'drive': True, 'folder_path_or_id': '188HSkUVKdwmx6RjKdcnIX0GeAP-b-h7r', 'required': {'action': 'action', 'bucher': 'bucher', 'ha': 'ha', 'lune': 'lune', 'maire': 'maire', 'ro': 'ro', 'void': 'void'}, 'restrict_roles': {'action': ['bot'], 'bucher': ['bot'], 'lune': ['bot'], 'maire': ['bot']}}, 'everyone_permissions': ['embed_links', 'attach_files', 'add_reactions', 'use_external_emojis', 'read_message_history', 'send_tts_messages', 'use_slash_commands', 'connect', 'speak', 'stream', 'use_voice_activation'], 'explicit_content_filter': 'disabled', 'icon': {'drive': True, 'png_path_or_id': '13AmXXo_uF1prMAc6csJQ-pHGQ3A7Ux--'}, 'name': 'LG-Rez Server', 'preferred_locale': 'fr', 'roles': {'bot': {'color': '9b59b6', 'hoist': True, 'mentionable': False, 'name': 'Bot', 'permissions': 'all'}, 'joueur_en_vie': {'color': '70ad47', 'hoist': True, 'mentionable': False, 'name': 'Joueur en vie', 'permissions': ['read_messages', 'send_messages']}, 'joueur_mort': {'color': '992d22', 'hoist': True, 'mentionable': False, 'name': 'Joueur mort', 'permissions': ['read_messages']}, 'maire': {'color': 'f1c40f', 'hoist': True, 'mentionable': True, 'name': 'Maire', 'permissions': ['mention_everyone']}, 'mj': {'color': '64b9e9', 'hoist': True, 'mentionable': True, 'name': 'MJ', 'permissions': 'all'}, 'observateur': {'color': '648080', 'hoist': True, 'mentionable': False, 'name': 'Observateur', 'permissions': []}, 'redacteur': {'color': '607d8b', 'hoist': False, 'mentionable': False, 'name': 'Rédacteur', 'permissions': []}}, 'system_channel': 'logs', 'system_channel_flags': {'join_notifications': True, 'premium_subscriptions': True}, 'verification_level': 'none'}¶
Structure du serveur utilisée par !setup (serveur, rôles, salons, emojis). Voir le fichier
`server_structure.json
(valeur par défaut) pour les possibilités de personnalisation.
- lgrez.config.private_chan_prefix = 'conv-bot-'¶
Préfixe des noms des salons de conversation bot.
- Type
- lgrez.config.private_chan_category_name = 'CONVERSATION BOT'¶
Nom de la catégorie des conversations bot, pour l’inscription (sera éventuellement suivi de 2, 3… si plus de 50 joueurs). Devrait correspondre à au nom de la catégorie correspondante dans
server_structure
["categories"]
- Type
- lgrez.config.boudoirs_category_name = 'BOUDOIRS'¶
Nom de la catégorie des boudoirs (sera éventuellement suivi de 2, 3… si plus de 50 boudoirs). Devrait correspondre à au nom de la catégorie correspondante dans
server_structure
["categories"]
- Type
- lgrez.config.old_boudoirs_category_name = 'CIMETIÈRE DES BOUDOIRS'¶
Nom de la catégorie des boudoirs devenus inutiles (sera éventuellement suivi de 2, 3… si plus de 50 boudoirs). Devrait correspondre à au nom de la catégorie correspondante dans
server_structure
["categories"]
- Type
- lgrez.config.debut_saison = '32 plopembre'¶
Date de début de saison (pour information lors de l’inscription).
- Type
- lgrez.config.demande_chambre = True¶
Si
False
, le processus d’insciption ne demandera pas la chambre des joueurs, qui seront tous inscrits enchambre_mj
(et la chambre ne sera pas indiquée dans!vivants
).- Type
- async lgrez.config.additional_inscription_step(member, chan)[source]¶
Coroutine permettant d’ajouter des étapes au processus d’inscription.
Cette coroutine est appelée par
features.inscription.main()
juste avant l’inscription en base. Si elle renvoie False, l’inscription est annulée ; si elle ne renvoie rien ou une autre valeur, elle continue selon le processus habituel.- Paramètres
member (discord.Member) – membre en cours d’inscription.
chan (discord.TextChannel) – chan perso créé pour l’inscription.
- Renvoie
Si
False
, annule l’inscription.
- lgrez.config.output_liveness = False¶
Si
True
, le bot appelleraLGBot.i_am_alive()
toutes les 60 secondes. Ce n’est pas activé par défaut.- Type
- lgrez.config.default_role_slug = 'nonattr'¶
slug
du rôle par défaut, attribué aux joueurs lors de l’inscription (renvoyé parbdd.Role.default()
). Doit correspodre à un rôle existant (défini dans le GSheet Rôles et actions).- Type
- lgrez.config.default_camp_slug = 'nonattr'¶
slug
du camp par défaut, attribué aux joueurs lors de l’inscription (renvoyé parbdd.Camp.default()
). Doit correspodre à un camp existant (défini dans le GSheet Rôles et actions).- Type
- lgrez.config.tdb_main_sheet = 'Journée en cours'¶
Nom de la feuille du Tableau de bord contenant l’état actuel des joueurs, sur laquelle sont effectuées les modifications.
- Type
- lgrez.config.tdb_votes_sheet = 'Journée en cours'¶
Nom de la feuille du Tableau de bord contenant les résultats des votes (après corrections manuelles éventuelles).
- Type
- lgrez.config.tdb_header_row = 3¶
Numéro de la ligne de la feuille principale (
tdb_main_sheet
) du Tableau de bord contenant les noms des colonnes (commençant de 1).- Type
- lgrez.config.tdb_id_column = 'A'¶
Nom de la colonne de la feuille principale (
tdb_main_sheet
) du Tableau de bord contenant les IDs Discord des joueurs.- Type
- lgrez.config.tdb_main_columns = ('J', 'Q')¶
Noms de la première et de la dernière colonne de la zone de la feuille principale (
tdb_main_sheet
) du Tableau de bord contenant les informations (colonnes de la BDD) des joueurs.
- lgrez.config.tdb_tampon_columns = ('B', 'I')¶
Noms de la première et de la dernière colonne de la zone de la feuille principale (
tdb_main_sheet
) du Tableau de bord contenant l’ancien état des informations des joueurs (avant!sync
).
- lgrez.config.max_ciblages_per_action = 3¶
Nombre maximal de modèles de ciblages (
bdd.BaseCiblage
) renseignés pour chaque modèle d’action (bdd.BaseAction
), à droite de la feuillebaseactions
du GSheet Rôles et actions.- Type
- lgrez.config.modif_vote_baseaction = 'modification-vote'¶
bdd.BaseAction.slug
de l’action de base permettant de modifier un vote (rôle de l”Intigant dans le jeu PCéen). Cette baseaction doit avoir deux ciblages de slugs « cible » et « vote ».- Type
- lgrez.config.ajout_vote_baseaction = 'ajout-vote'¶
bdd.BaseAction.slug
de l’action de base permettant d’ajouter un/des vote(s) (rôle du Corbeau dans le jeu PCéen).- Type
- lgrez.config.n_ajouts_votes = 2¶
Nombre de votes ajoutés par l’action
ajout_vote_baseaction
.- Type
- lgrez.config.db_votecond_sheet = 'votecond_brut'¶
Nom de la feuille du GSheet Données brûtes où enregistrer les votes brutes pour le condamné du jour.
- Type
- lgrez.config.db_votemaire_sheet = 'votemaire_brut'¶
Nom de la feuille du GSheet Données brûtes où enregistrer les votes brutes pour le nouveau maire.
- Type
- lgrez.config.db_voteloups_sheet = 'voteloups_brut'¶
Nom de la feuille du GSheet Données brûtes où enregistrer les votes brutes pour le vote des loups.
- Type
- lgrez.config.db_actions_sheet = 'actions_brut'¶
Nom de la feuille du GSheet Données brûtes où enregistrer les actions effectuées.
- Type
- lgrez.config.stop_keywords = ['stop', '!stop']¶
Mots-clés (en minuscule) utilisables (quelque soit la casse) pour arrêter une commande en cours d’exécution.
- lgrez.config.refills_full = ['weekends']¶
Mots-clés de rechargement (dans
bdd.BaseAction.refill
) permettant de recharger une action à son nombre de charges initial.
- lgrez.config.refills_one = ['forgeron', 'rebouteux', 'divin']¶
Mots-clés de rechargement (dans
bdd.BaseAction.refill
) permettant de recharger une action de une charge.
- lgrez.config.refills_divins = ['divin']¶
Mots-clés de rechargement (dans
bdd.BaseAction.refill
) à utiliser par le MJ pour ajouter une charge à une action.
- lgrez.config.is_ready = False¶
Indique si le bot est prêt (
LGBot.on_ready()
appelé) N’est pas concu pour être changé manuellement.- Type
- lgrez.config.is_setup = True¶
Indique si le serveur est construit (
!setup
appelé) N’est pas conçu pour être changé manuellement.- Type
- class lgrez.config.Role(*args, **kwargs)[source]¶
Rôles Discord nécessaires au jeu
Cette classe dérive de
ready_check.ReadyCheck
: accéder aux attributs ci-dessous avant que le bot ne soit connecté au serveur lève uneNotReadyError
.Plus précisément,
LGBot.on_ready()
remplace le nom du rôle par l’objetdiscord.Role
correspondant : si les noms des rôles sur Discord ont été modifiés, indiquer leur nom ici (lgrez.config.Role.x = "nouveau nom"
) avant de lancer le bot, sans quoiLGBot.on_ready()
lèvera une erreur.Ne pas instancier cette classe.
Rôles utilisés (dans l’ordre hiérarchique conseillé) :
- mj¶
Maître du Jeu. Nom par défaut : « MJ ».
- joueur_en_vie¶
Joueur vivant, pouvant parler publiquement. Nom par défaut : « Joueur en vie ».
- joueur_mort¶
Joueur mort, ne pouvant pas parler publiquement. Nom par défaut : « Joueur mort ».
- maire¶
Joueur élu Maire, mis en avant et pouvant utiliser @everyone. Nom par défaut : « Maire ».
- redacteur¶
Rôle permettant à un joueur d’utiliser les commandes de gestion d’IA (voir
features.gestion_ia.GestionIA
). Mettre le même nom que le rôle des MJs si vous voulez supprimer ce rôle. Nom par défaut : « Rédacteur ».
- everyone¶
Rôle de base. Les joueurs dont le rôle le plus élevé est ce rôle (ou moins) seront ignorés par le bot. Nom par défaut: « @everyone » (rôle Discord de base)
- class lgrez.config.Channel(*args, **kwargs)[source]¶
Salons Discord nécessaires au jeu
Cette classe dérive de
ready_check.ReadyCheck
: accéder aux attributs ci-dessous avant que le bot ne soit connecté au serveur lève uneNotReadyError
.Plus précisément,
LGBot.on_ready()
remplace le nom du rôle par l’objetdiscord.TextChannel
correspondant : si les noms des salons sur Discord ont été modifiés, indiquer leur nom ici (lgrez.config.Channel.x = "nouveau nom"
) avant de lancer le bot, sans quoiLGBot.on_ready()
lèvera une erreur.Ne pas instancier cette classe.
Salons utilisés (dans l’ordre d’affichage conseillé) :
- roles¶
Salon listant les rôles (catégorie Informations). Nom par défaut : « roles ».
- logs¶
Salon pour les messages techniques (catégorie réservée aux MJs). Nom par défaut : « logs ».
- annonces¶
Salon d’annonces (catégorie Place du village). Nom par défaut : « annonces ».
- haros¶
Salon des haros et candidatures (catégorie Place du village). Nom par défaut : « haros ».
- debats¶
Salon de discussion principal (catégorie Place du village). Nom par défaut : « débats ».
- class lgrez.config.Emoji(*args, **kwargs)[source]¶
Emojis Discord nécessaires au jeu
Cette classe dérive de
ready_check.ReadyCheck
: accéder aux attributs ci-dessous avant que le bot ne soit connecté au serveur lève uneNotReadyError
.Plus précisément,
LGBot.on_ready()
remplace le nom du rôle par l’objetdiscord.Emoji
correspondant : si les noms des emojis sur Discord ont été modifiés, indiquer leur nom ici (lgrez.config.Emoji.x = "nouveau nom"
) avant de lancer le bot, sans quoiLGBot.on_ready()
lèvera une erreur.Ne pas instancier cette classe.
Emojis utilisés (noms par défaut identiques aux noms des attributs) :
- ha¶
- ro¶
Accolés, forment le mot « haro »
- bucher¶
Représente le vote pour le condamné du jour
- maire¶
Représente le vote pour le nouveau maire
- lune¶
Représente le vote des loups
- action¶
Représente les actions de rôle
- void¶
Image vide, pour séparations verticales et autres filouteries