lgrez.LGBot
(classe principale)¶
- class lgrez.LGBot(command_prefix='!', case_insensitive=True, description=None, intents=None, member_cache_flags=None, **kwargs)[source]¶
Bot Discord pour parties de Loup-Garou à la PCéenne.
Classe fille de
discord.ext.commands.Bot
, implémentant les commandes et fonctionnalités du Loup-Garou de la Rez.- Paramètres
command_prefix (str) – passé à
discord.ext.commands.Bot
case_insensitive (bool) – passé à
discord.ext.commands.Bot
description (str) – idem, défaut :
lgrez.bot.default_descr
intents (discord.Intents) – idem, défaut :
all()
. Certaines commandes et fonctionnalités risquent de ne pas fonctionner avec une autre valeur.member_cache_flags (discord.MemberCacheFlags) – idem, défaut :
all()
. Certaines commandes et fonctionnalités risquent de ne pas fonctionner avec une autre valeur.**kwargs – autres options de
Bot
Avertissement
LG-Bot n’est pas thread-safe : seule une instance du bot peut tourner en parallèle dans un interpréteur.
(Ceci est du aux objets de
config
, contenant directement le bot, le serveur Discord, la session de connexion BDD… ; cette limitation résulte d’une orientation volontaire du module depuis sa version 2.0 pour simplifier et optimiser la manipulation des objects et fonctions).- GUILD_ID¶
L’ID du serveur sur lequel tourne le bot (normalement toujours
config.guild
.id
). VautNone
avant l’appel àrun()
, puis la valeur de la variable d’environnementLGREZ_SERVER_ID
.- Type
- tasks¶
Tâches planifiées actuellement en attente. Privilégier plutôt l’emploi de
bdd.Tache.handler
.- Type
dict[int (bdd.Tache.id), asyncio.TimerHandle]
- async on_webhooks_update(channel)[source]¶
Méthodes appelées par Discord aux différents évènements correspondants.
LG-Bot n’utilise ces méthodes que pour vérifier qu’aucun objet indispensable au fonctionnement du bot n’a été altéré (voir
check_and_prepare_objects()
).
- async on_ready()[source]¶
Méthode appellée par Discord au démarrage du bot.
Vérifie le serveur (appelle
check_and_prepare_objects()
), log et affiche publiquement que le bot est fonctionnel (activité) ; restaure les tâches planifiées éventuelles et exécute celles manquées.Si
config.output_liveness
vautTrue
, lancebot.i_am_alive
(écriture chaque minute sur un fichier disque)Voir
discord.on_ready()
pour plus d’informations.
- async on_member_join(member)[source]¶
Méthode appellée par l’API à l’arrivée d’un nouveau membre.
Log et lance le processus d’inscription.
Ne fait rien si l’arrivée n’est pas sur le serveur
config.guild
.- Paramètres
member (discord.Member) – Le membre qui vient d’arriver.
Voir
discord.on_member_join()
pour plus d’informations.
- async on_member_remove(member)[source]¶
Méthode appellée par l’API au départ d’un membre du serveur.
Log en mentionnant les MJs.
Ne fait rien si le départ n’est pas du serveur
config.guild
.- Paramètres
member (discord.Member) – Le joueur qui vient de partir.
Voir
discord.on_member_remove()
pour plus d’informations.
- async on_message(message)[source]¶
Méthode appellée par l’API à la réception d’un message.
- Invoque l’ensemble des commandes, ou les règles d’IA si
Le message n’est pas une commande
Le message est posté dans un channel privé (dont le nom commence par
config.private_chan_prefix
)Il n’y a pas déjà de commande en cours dans ce channel
Le channel n’est pas en mode STFU
Ne fait rien si le message n’est pas sur le serveur
config.guild
, si il est envoyé par le bot lui-même ou par un membre sans aucun rôle affecté.- Paramètres
member (discord.Member) – Le joueur qui vient d’arriver.
Voir
discord.on_message()
pour plus d’informations.
- async on_raw_reaction_add(payload)[source]¶
Méthode appellée par l’API à l’ajout d’une réaction.
Appelle la fonction adéquate si le membre est un joueur inscrit, est sur un chan de conversation bot et a cliqué sur
config.Emoji.bucher
,maire
,lune
ouaction
.Ne fait rien si la réaction n’est pas sur le serveur
config.guild
.- Paramètres
payload (discord.RawReactionActionEvent) – Paramètre limité (car le message n’est pas forcément dans le cache du bot, par exemple si il a été reboot depuis).
- Quelques attributs utiles :
payload.member
(discord.Member
) : Membre ayant posé la réactionpayload.emoji
(discord.PartialEmoji
) : PartialEmoji envoyépayload.message_id
(int
) : ID du message réacté
Voir
discord.on_raw_reaction_add()
pour plus d’informations.
- async on_command_error(ctx, exc)[source]¶
Méthode appellée par l’API à un exception dans une commande.
Analyse l’erreur survenue et informe le joueur de manière adéquate en fonction, en mentionnant les MJs si besoin.
Ne fait rien si l’exception n’a pas eu lieu sur le serveur
config.guild
.- Paramètres
ctx (discord.ext.commands.Context) – Contexte dans lequel l’exception a été levée
exc (discord.ext.commands.CommandError) – Exception levée
Voir
discord.on_command_error()
pour plus d’informations.
- async on_error(event, *args, **kwargs)[source]¶
Méthode appellée par l’API à une exception hors commande.
Log en mentionnant les MJs. Cette méthode permet de gérer les exceptions sans briser la loop du bot (i.e. il reste en ligne).
- Paramètres
event (str) – Nom de l’évènement ayant généré une erreur (
"member_join"
,"message"
…)*args – Arguments passés à la fonction traitant l’évènement :
member
,message
…**kwargs – Arguments passés à la fonction traitant l’évènement :
member
,message
…
Voir
discord.on_error()
pour plus d’informations.
- async check_and_prepare_objects()[source]¶
Vérifie et prépare les objets Discord nécessaires au bot.
Remplit
config.Role
,config.Channel
,config.Emoji
,config.private_chan_category_name
,config.boudoirs_category_name
etconfig.webhook
avec les objets Discord correspondants, et avertit les MJs en cas d’éléments manquants.
- i_am_alive(filename='alive.log')[source]¶
Témoigne que le bot est en vie et non bloqué.
Exporte le temps actuel (UTC) et planifie un nouvel appel dans 60s. Ce processus n’est lancé que si
config.output_liveness
est mis àTrue
(opt-in).- Paramètres
filename (
str
) – fichier où exporter le temps actuel (écrase le contenu).
- run(**kwargs)[source]¶
Prépare puis lance le bot (bloquant).
Récupère les informations de connexion, établit la connexion à la base de données puis lance le bot.
- Paramètres
**kwargs – Passés à
discord.ext.commands.Bot.run()
.