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

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).

bot

L’ID du serveur sur lequel tourne le bot (normalement toujours config.guild .id). Vaut None avant l’appel à run(), puis la valeur de la variable d’environnement LGREZ_SERVER_ID.

Type

int

in_command

IDs des salons dans lequels une commande est en cours d’exécution.

Type

list[int]

in_stfu

IDs des salons en mode STFU.

Type

list[int]

in_fals

IDs des salons en mode Foire à la saucisse.

Type

list[int]

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_ready()[source]

Méthode appellée par Discord au démarrage du bot.

Vérifie le serveur, log et affiche publiquement que le bot est fonctionnel ; restaure les tâches planifiées éventuelles et exécute celles manquées.

Si config.output_liveness vaut ``True`, lance bot.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 ou action.

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 :

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

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.

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.

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 connection, établit la connection à la base de données puis lance le bot.

Paramètres

**kwargs – Passés à discord.ext.commands.Bot.run().