lgrez.features
(Commandes et autres fonctionnalités)¶
lg-rez / Commandes et autres fonctionnalités
Chaque module de lgrez.features
implémente une fonctionnalité
spécifique des LGBots. La majorité implémentent un Cog
(discord.ext.commands.Cog
) contenant une ou plusieurs
commandes Discord, mais peuvent aussi définir des fonctions pour
un usage public.
Note
Les Cogs et leurs commandes peuvent être vus en envoyant !help
à un LGBot fonctionnel (en possédant les rôles config.Role.mj
et config.Role.joueur_en_vie
)
Liste des commandes :
Commande |
Description |
Autorisations |
Restrictions |
||||
---|---|---|---|---|---|---|---|
Joueur en vie |
Joueur mort |
Rédacteur |
MJ |
||||
Informations - Commandes pour en savoir plus sur soi et les autres : |
|||||||
|
Affiche la liste des rôles / des informations sur un rôle |
X |
X |
X |
|||
|
Donne le rôle d’un joueur |
X |
|||||
|
Liste les joueurs ayant un rôle donné |
X |
|||||
|
Affiche des informations et boutons sur les votes / actions en cours |
X |
|
||||
|
Affiche tes informations de rôle / actions |
X |
|
||||
|
Affiche et modifie les actions d’un joueur |
X |
|||||
|
Affiche la liste des joueurs vivants |
X |
X |
X |
|||
|
Affiche la liste des joueurs morts |
X |
X |
X |
|||
VoterAgir - Commandes de vote et d’action de rôle : |
|||||||
|
Vote pour le condamné du jour |
X |
|
||||
|
Vote pour le nouveau maire |
X |
|
||||
|
Vote pour la victime de l’attaque des loups |
X |
|
||||
|
Utilise l’action de ton rôle / une des actions associées |
X |
|
||||
ActionsPubliques - Commandes d’actions vous engageant publiquement : |
|||||||
|
Lance publiquement un haro contre un autre joueur. |
X |
|
||||
|
Candidate à l’élection du nouveau maire. |
X |
|
||||
|
Efface les haros / candidatures du jour |
X |
|||||
OpenClose - Commandes de gestion des votes et actions : |
|||||||
|
Lance un vote / des actions de rôle |
X |
|||||
|
Ferme un vote / des actions de rôle |
X |
|||||
|
Envoi un rappel de vote / actions de rôle |
X |
|||||
|
Recharger un/des pouvoirs rechargeables |
X |
|||||
|
Lance le jeu |
X |
|||||
Sync - Commandes de synchronisation des GSheets vers la BDD et les joueurs : |
|||||||
|
Récupère et applique les modifs du Tableau de bord |
X |
|||||
|
Remplit les tables et #roles depuis le GSheet ad hoc |
X |
|||||
GestionTaches - Commandes de planification, exécution, annulation de tâches : |
|||||||
|
Liste les tâches en attente |
X |
|||||
|
Planifie une tâche au moment voulu |
X |
|||||
|
Exécute une commande après XhYmZs |
X |
|||||
|
Annule une ou plusieurs tâche(s) planifiée(s) |
X |
|||||
Communication - Commandes d’envoi de messages, d’embeds, d’annonces… : |
|||||||
|
Prépare un embed (message riche) et l’envoie |
X |
|||||
|
Envoie un message à tous ou certains joueurs |
X |
|||||
|
Envoie un message dans un salon |
X |
|||||
|
Trace le résultat du vote et l’envoie sur #annonces |
X |
|||||
|
Annonce un ou plusieur mort(s) hors-vote |
X |
|||||
|
Récupère et poste un lore depuis un Google Docs |
X |
|||||
|
Modifie un message du bot |
X |
|||||
GestionIA - Commandes relatives à l’IA (réponses automatiques du bot) : |
|||||||
|
Active/désactive la réponse automatique du bot sur ton channel privé |
X |
X |
X |
|
||
|
Active/désactive le mode « foire à la saucisse » |
X |
X |
X |
|||
|
Force le bot à réagir à un message |
X |
X |
X |
|||
|
Force le bot à réagir à un message comme en mode Foire à la saucisse |
X |
X |
X |
|||
|
Ajoute une règle d’IA |
X |
X |
||||
|
Liste les règles d’IA reconnues par le bot |
X |
X |
||||
|
Modifie/supprime une règle d’IA |
X |
X |
||||
Annexe - Commandes annexes aux usages divers : |
|||||||
|
Lance un ou plusieurs dés |
X |
X |
X |
|||
|
Renvoie le résultat d’un tirage à Pile ou Face (aléatoire) |
X |
X |
X |
|||
|
Envoie un ping au bot |
X |
X |
X |
|||
|
J’ai glissé chef |
X |
X |
X |
|||
|
J’ai aussi glissé chef, mais un peu moins |
X |
X |
X |
|||
GestionChans - Gestion des salons : |
|||||||
|
Gestion des boudoirs |
list |
X |
X |
|
||
create |
X |
|
|||||
invite |
X |
X |
|
||||
expulse |
X |
X |
|
||||
leave |
X |
X |
|
||||
transfer |
X |
X |
|
||||
delete |
X |
X |
|
||||
rename |
X |
X |
|
||||
|
Ajoute les membres au chan courant |
X |
|||||
|
Supprime tous les messages de ce chan |
X |
|||||
Special - Commandes spéciales (méta-commandes et expérimentations) : |
|||||||
|
Tue instantanément le bot, sans confirmation |
X |
|||||
|
Exécute du code Python et affiche le résultat |
X |
|||||
|
Lance un terminal Python directement dans Discord |
X |
|||||
|
Lance la procédure d’inscription pour un membre |
X |
|||||
|
Exécute une commande en tant qu’un autre joueur |
X |
|||||
|
Supprime le message puis exécute la commande |
X |
|||||
|
Peut débloquer des situations compliquées (beta) |
X |
X |
X |
|
||
|
Affiche la liste des commandes utilisables et leur utilisation |
X |
X |
X |
|||
|
Informations et mentions légales du projet |
X |
X |
X |
.special
¶
lg-rez / features / Commandes spéciales
Commandes spéciales (méta-commandes, imitant ou impactant le déroulement des autres ou le fonctionnement du bot)
- class lgrez.features.special.Special(*args, **kwargs)[source]¶
Commandes spéciales (méta-commandes et expérimentations)
Note
Cette classe est un Cog, i.e. un rassemblements de commandes.
L’ensemble des commandes qu’elle contient, créées par le décorateur
@discord.ext.commands.command
, sont des objetsdiscord.ext.commands.Command
accessibles commecog.cmd_name
.Pour plus de lisiblité, seules les fonctions appellées lors de l’invoquation des commandes (
Command.callback
) sont décrites ci-après, mais toutes les méthodes deCommand
sont évidemment accessibles.Ces callbacks ont tous comme signature (sans compter
self
si définies dans un Cog) :async def command(ctx, [ arg1, [..., argN,] ] [{*args | *, rest}]) -> None
ctx
(discord.ext.commands.Context
) le contexte d’invocation de la commande, construit automatiquement pardiscord.py
à l’appel deBot.process_commands
ouBot.get_context
, puisarg1, ..., argN
(str
) zéro, un ou plusieurs arguments(s) positionnels parsés à partir du texte entré par l’utilisateur (mots séparés par des espaces) ;rest
(str
) le texte restant après le traitement des arguments positionnels.
Une exception dérivant de
discord.ext.commands.UserInputError
est levée en cas d’utilisation incorrecte (puis traitée parLGBot.on_command_error()
).Commandes définies dans ce cog :
- Commande
!panik
(alias!kill
) - async panik.callback(ctx)¶
Tue instantanément le bot, sans confirmation (COMMANDE MJ)
PAAAAANIK
- Commande
- Commande
!do
- async do.callback(ctx, *, code)¶
Exécute du code Python et affiche le résultat (COMMANDE MJ)
- Paramètres
code – instructions valides dans le contexte du LGbot (utilisables notemment :
ctx
,config
,blocs
,features
,bdd
,<table>
…)
Si
code
est une coroutine, elle sera awaited (ne pas inclureawait
danscode
).Aussi connue sous le nom de « faille de sécurité », cette commande permet de faire environ tout ce qu’on veut sur le bot (y compris le crasher, importer des modules, exécuter des fichiers .py… même si c’est un peu compliqué) voire d’impacter le serveur sur lequel le bot tourne si on est motivé.
À utiliser avec parcimonie donc, et QUE pour du développement/debug !
- Commande
- Commande
!shell
- async shell.callback(ctx)¶
Lance un terminal Python directement dans Discord (COMMANDE MJ)
Envoyer
help
dans le pseudo-terminal pour plus d’informations sur son fonctionnement.Évidemment, les avertissements dans
!do
s’appliquent ici : ne pas faire n’imp avec cette commande !! (même si ça peut être très utile, genre pour ajouter des gens en masse à un channel)
- Commande
- Commande
!co
- async co.callback(ctx, cible=None)¶
Lance la procédure d’inscription pour un membre (COMMANDE MJ)
Fat comme si on se connectait au serveur pour la première fois.
- Paramètres
cible – le nom exact ou la mention (
@joueur
) du joueur à inscrire, par défaut le lançeur de la commande.
Cette commande est principalement destinée aux tests de développement, mais peut être utile si un joueur chibre son inscription (à utiliser dans son channel, ou
#bienvenue
(avec!autodestruct
) si même le début a chibré).
- Commande
- Commande
!doas
- async doas.callback(ctx, *, qui_quoi)¶
Exécute une commande en tant qu’un autre joueur (COMMANDE MJ)
- Paramètres
qui_quoi – nom de la cible (nom/mention d’un joueur INSCRIT) suivi de la commande à exécuter (commençant par un
!
).
Exemple
!doas Vincent Croquette !vote Annie Colin
- Commande
- Commande
!secret
(alias!autodestruct
,!ad
) - async secret.callback(ctx, *, quoi)¶
Supprime le message puis exécute la commande (COMMANDE MJ)
- Paramètres
quoi – commande à exécuter, commençant par un
!
Utile notemment pour faire des commandes dans un channel public, pour que la commande (moche) soit immédiatement supprimée.
- Commande
- Commande
!stop
- async stop.callback(ctx)¶
Peut débloquer des situations compliquées (beta)
Ne pas utiliser cette commande sauf en cas de force majeure où plus rien ne marche, et sur demande d’un MJ (après c’est pas dit que ça marche mieux après l’avoir utilisée)
- Commande
- Commande
!help
(alias!aide
,!aled
,!oskour
) - async help.callback(ctx, *, command=None)¶
Affiche la liste des commandes utilisables et leur utilisation
- Paramètres
command (optionnel) – nom exact d’une commande à expliquer (ou un de ses alias)
Si
command
n’est pas précisée, liste l’ensemble des commandes accessibles à l’utilisateur.
- Commande
- Commande
!apropos
(alias!about
,!copyright
,!licence
,!auteurs
) - async apropos.callback(ctx)¶
Informations et mentions légales du projet
N’hésitez-pas à nous contacter pour en savoir plus !
- Commande
.actions_publiques
¶
lg-rez / features / Actions publiques
Gestion des haros, candidatures à la mairie, résultats des votes
- class lgrez.features.actions_publiques.ActionsPubliques(*args, **kwargs)[source]¶
Commandes d’actions vous engageant publiquement
Commandes définies dans ce cog :
- Commande
!haro
- async haro.callback(ctx, *, cible=None)¶
Lance publiquement un haro contre un autre joueur.
- Paramètres
cible – nom du joueur à accuser
Cette commande n’est utilisable que lorsqu’un vote pour le condamné est en cours.
- Commande
- Commande
!candid
- async candid.callback(ctx)¶
Candidate à l’élection du nouveau maire.
Cette commande n’est utilisable que lorsqu’un vote pour le nouveau maire est en cours.
- Commande
.annexe
¶
lg-rez / features / Commandes annexes
Commandes diverses qu’on ne savait pas où ranger
- class lgrez.features.annexe.Annexe(*args, **kwargs)[source]¶
Commandes annexes aux usages divers
Commandes définies dans ce cog :
- Commande
!roll
- async roll.callback(ctx, *, XdY)¶
Lance un ou plusieurs dés
- Paramètres
XdY – dés à lancer + modifieurs, au format
XdY + XdY + ... + Z - Z ...
avec X le nombre de dés, Y le nombre de faces et Z les modifieurs (constants).
Exemples
!roll 1d6
-> lance un dé à 6 faces!roll 1d20 +3
-> lance un dé à 20 faces, ajoute 3 au résultat!roll 1d20 + 2d6 -8
-> lance un dé 20 plus deux dés 6, enlève 8 au résultat
- Commande
- Commande
!coinflip
(alias!cf
,!pf
) - async coinflip.callback(ctx)¶
Renvoie le résultat d’un tirage à Pile ou Face (aléatoire)
Pile je gagne, face tu perds.
- Commande
- Commande
!ping
(alias!pong
) - async ping.callback(ctx)¶
Envoie un ping au bot
Pong
Avertissement
Commande en bêta, non couverte par les tests unitaires.
- Commande
- Commande
!akinator
- async akinator.callback(ctx)¶
J’ai glissé chef
Implémentation directe de https://pypi.org/project/akinator.py
Avertissement
Commande en bêta, non couverte par les tests unitaires.
- Commande
- Commande
!xkcd
- async xkcd.callback(ctx, N)¶
J’ai aussi glissé chef, mais un peu moins
- Paramètres
N – numéro du comic
Avertissement
Commande en bêta, non couverte par les tests unitaires.
- Commande
.chans
¶
lg-rez / features / Commandes de gestion des salons
Création, ajout, suppression de membres
- lgrez.features.chans.in_boudoir(callback)[source]¶
Décorateur : commande utilisable dans un boudoir uniquement.
Lors d’une invocation de la commande décorée hors d’un boudoir (enregistré dans
bdd.Boudoir
), affiche un message d’erreur.Ce décorateur n’est utilisable que sur une commande définie dans un Cog.
- class lgrez.features.chans.GestionChans(*args, **kwargs)[source]¶
Gestion des salons
Commandes définies dans ce cog :
- Commande
!boudoir
(alias!boudoirs
) - async boudoir.callback(ctx)¶
Gestion des boudoirs
Les options relatives à un boudoir précis ne peuvent être exécutées que dans ce boudoir ; certaines sont réservées au gérant dudit boudoir.
Note
Cette commande est un Groupe (
discord.ext.commands.Group
), i.e. une commande composée de plusieurs sous-commandes (ou options).Les sous-commandes, créées par le décorateur
@<group>.command
(ou@<group>.group
pour ajouter un niveau), sont également des objetsCommand
accessibles via<group>.get_command
et la note relative aux cogs (callback, signature…) s’applique.- Option
!boudoir create
(alias!new
,!creer
,!créer
) - async create.callback(ctx, *, nom=None)¶
Crée un nouveau boudoir dont tu es gérant
- Option
- Option
!boudoir delete
- async delete.callback(ctx)¶
Supprime ce boudoir
- Option
- Option
!boudoir expulse
(alias!remove
) - async expulse.callback(ctx, *, cible)¶
Expulse un membre de ce boudoir
- Option
- Option
!boudoir invite
(alias!add
) - async invite.callback(ctx, *, cible)¶
Invite un joueur à rejoindre ce boudoir
- Option
- Option
!boudoir leave
(alias!quit
) - async leave.callback(ctx)¶
Quitte ce boudoir
- Option
- Option
!boudoir list
(alias!liste
) - async list.callback(ctx)¶
Liste les boudoirs dans lesquels tu es
- Option
- Option
!boudoir rename
- async rename.callback(ctx, *, nom)¶
Renomme ce boudoir
- Option
- Option
!boudoir transfer
(alias!transmit
) - async transfer.callback(ctx, cible=None)¶
Transfère les droits de gestion de ce boudoir
- Option
- Commande
- Commande
!addhere
- async addhere.callback(ctx, *joueurs)¶
Ajoute les membres au chan courant (COMMANDE MJ)
- Paramètres
*joueurs – membres à ajouter, chacun entouré par des guillemets si nom + prénom
Si
*joueurs
est un seul élément, il peut être de la forme<crit>=<filtre>
tel que décrit dans l’aide de!send
.
- Commande
- Commande
!purge
- async purge.callback(ctx, N=None)¶
Supprime tous les messages de ce chan (COMMANDE MJ)
- Paramètres
N – nombre de messages à supprimer (défaut : tous)
- Commande
.communication
¶
lg-rez / features / Communication
Envoi de messages, d’embeds…
- class lgrez.features.communication.Communication(*args, **kwargs)[source]¶
Commandes d’envoi de messages, d’embeds, d’annonces…
Commandes définies dans ce cog :
- Commande
!embed
- async embed.callback(ctx, key=None, *, val=None)¶
Prépare un embed (message riche) et l’envoie (COMMANDE MJ)
Avertissement
Commande en bêta, non couverte par les tests unitaires et souffrant de bugs connus (avec les fields notemment)
- Paramètres
key – sous-commande (voir ci-dessous). Si omis, prévisualise le brouillon d’embed actuellement en préparation ;
val – valeur associée. Pour les sous-commandes de construction d’élement, supprime ledit élément si omis.
- Sous-commandes générales :
!embed create <titre>
: Créer un nouveau brouillon d’embed (un seul brouillon en parallèle, partout)!embed delete
: Supprimer le brouillon d’embed!embed preview
: Voir l’embed sans les aides!embed post [#channel]
: Envoyer l’embed sur#channel
(chan courant si omis)
- Sous-commandes de construction d’éléments :
- Éléments généraux :
!embed title [titre]
!embed description [texte]
!embed url [url*]
!embed color [#ffffff]
(barre de gauche, code hexadécimal)
- Auteur :
!embed author [nom]
!embed author_url [url*]
!embed author_icon [url**]
- Talon :
!embed footer [texte]
!embed footer_icon [url**]
- Images :
!embed image [url**]
(grande image)!embed thumb [url**]
(en haut à droite)
- Champssyntaxe spéciale
!embed field <i> <skey> [val]
i
: Numéro du champ (commençant à0
). Si premier champ non existant, le crée ;skey
:name
: Nom du champvalue
: Valeur du champdelete
: Supprime le champ
Les champs sont (pour l’instant) forcément de type inline (côte à côte).
* Les URL doivent commencer par http(s):// pour être reconnues comme telles.
** Ces URL doivent correspondre à une image.
- Commande
- Commande
!send
(alias!tell
) - async send.callback(ctx, cible, *, message)¶
Envoie un message à tous ou certains joueurs (COMMANDE MJ)
- Paramètres
cible – destinataires
message – message, éventuellement formaté
cible
peut être :all
: Tous les joueurs inscrits, vivants et mortsvivants
: Les joueurs en viemorts
: Les joueurs morts<crit>=<filtre>
: Les joueurs répondant au critèreJoueur.<crit> == <filtre>
.crit
peut être"nom"
,"chambre"
,"statut"
,"role"
,"camp"
… L’ensemble doit être entouré de guillements sifiltre
contient un espace. Les rôles/camps sont cherchés par slug.le nom d’un joueur (raccourci pour
nom=X
, doit être entouré de guillements si nom + prénom)
message
peut contenir un ou plusieurs bouts de code Python à évaluer, entourés d’accolades.L’évaluation est faite séparément pour chaque joueur, ce qui permet de personnaliser le message grâce aux variables particulières dépendant du joueur :
joueur
: objet BDD du joueur recevant le message ==>joueur.nom
,joueur.role
…member
: objetdiscord.Member
associé ==>member.mention
chan
: objetdiscord.TextChannel
du chan privé du joueur
- Attention :
ctx
: objetdiscord.ext.commands.Context
de!send
==>ctx.author
= lanceur de la commande !!!
Les différentes tables de données sont accessibles sous leur nom (
Joueur
,Role
…)Il est impossible d’appeller des coroutines (await) dans le code à évaluer.
Exemples
!send all Bonsoir à tous c'est Fanta
!send vivants Attention {member.mention}, derrière toi c'est affreux !
!send "role=servante" Ça va vous ? Vous êtes bien {joueur.role.nom} ?
- Commande
- Commande
!post
- async post.callback(ctx, chan, *, message)¶
Envoie un message dans un salon (COMMANDE MJ)
- Paramètres
chan – nom du salon ou sa mention
message – message à envoyer (peut être aussi long que nécessaire, contenir des sauts de lignes…)
- Commande
- Commande
!plot
- async plot.callback(ctx, quoi, depuis=None)¶
Trace le résultat du vote et l’envoie sur #annonces (COMMANDE MJ)
Avertissement
Commande en bêta, non couverte par les tests unitaires
- Paramètres
quoi –
peut être
cond
pour le vote pour le condamnémaire
pour l’élection à la Mairie
depuis – heure éventuelle à partir de laquelle compter les votes (si plusieurs votes dans la journée), compte tous les votes du jour par défaut. Si plus tard que l’heure actuelle, compte les votes de la veille.
Trace les votes sous forme d’histogramme à partir du Tableau de bord, en fait un embed en présisant les résultats détaillés et l’envoie sur le chan
#annonces
.Si
quoi == "cond"
, déclenche aussi les actions liées au mot des MJs (bdd.ActionTrigger.mot_mjs
).
- Commande
- Commande
!annoncemort
- async annoncemort.callback(ctx, *, victime=None)¶
Annonce un ou plusieur mort(s) hors-vote (COMMANDE MJ)
- Paramètres
victime – (premier) mort à annoncer
Envoie un embed par mort dans
#annonces
- Commande
- Commande
!lore
- async lore.callback(ctx, doc_id)¶
Récupère et poste un lore depuis un Google Docs (COMMANDE MJ)
- Convertit les formats et éléments suivants vers Discord :
Gras, italique, souligné, barré;
Petites majuscules (-> majuscules);
Polices à chasse fixe (Consolas / Courier New) (-> code);
Liens hypertextes;
Listes à puces;
Mentions de joueurs, sous la forme
@Prénom Nom
;Emojis, sous la forme
:nom:
.
Permet soit de poster directement dans #annonces, soit de récupérer la version formatée du texte (pour copier-coller).
- Paramètres
doc_id – ID ou URL du document (doit être public ou dans le Drive partagé avec le compte de service)
- Commande
- Commande
!modif
- async modif.callback(ctx, ref, *, modifs)¶
Modifie un message du bot (COMMANDE MJ)
- Paramètres
ref –
référence vers le message à modifier, peut être
le lien du message,
son couple d’IDs dans le serveur (salon-message),
son ID seul (seulement si message dans ce salon),
un nom/mention de salon (si le dernier message est du bot),
rien, si on répond au message à modifier.
modifs – modifications à faire, sous la forme « avant > après » (ou juste « > après » pour tout remplacer).
Il n’est pas possible (pour le moment ?) de modifier une image, pièce jointe ou embed.
- Commande
.gestion_actions
¶
lg-rez / features / Gestion des actions
Liste, création, suppression, ouverture, fermeture d’actions
- lgrez.features.gestion_actions.add_action(action)[source]¶
Enregistre une action et programme son ouverture le cas échéant.
- Paramètres
action (bdd.Action) – l’action à enregistrer
- lgrez.features.gestion_actions.delete_action(action)[source]¶
Archive une action et annule les tâches en cours liées.
Depuis la version 2.1, l’action n’est plus supprimée mais est passée à
active
=False
.- Paramètres
action (bdd.Action) – l’action à supprimer
- async lgrez.features.gestion_actions.open_action(action)[source]¶
Ouvre l’action.
- Paramètres
action (bdd.Action) – l’action à ouvir
- Opérations réalisées :
Vérification des conditions (cooldown, charges…) et reprogrammation si nécessaire ;
Gestion des tâches planifiées (planifie remind/close si applicable) ;
Information du joueur.
- async lgrez.features.gestion_actions.close_action(action)[source]¶
Ferme l’action.
- Paramètres
action (bdd.Action) – l’action à enregistrer
- Opérations réalisées :
Archivage si nécessaire ;
Gestion des tâches planifiées (planifie prochaine ouverture si applicable) ;
Information du joueur (si charge– seulement).
- lgrez.features.gestion_actions.get_actions(quoi, trigger, heure=None)[source]¶
Renvoie les actions répondant à un déclencheur donné.
- Paramètres
quoi (str) –
Type d’opération en cours :
"open"
: ouverture,Action.is_open
doit être faux;"close"
: fermeture,Action.is_open
doit être vrai;"remind"
: rappel,Action.is_waiting
doit être vrai.
trigger (bdd.ActionTrigger) – valeur de
Action.trigger_debut/fin
à détecter.heure (datetime.time) – si
trigger == "temporel"
, ajoute la conditionAction.heure_debut/fin == heure
.
- Renvoie
La liste des actions correspondantes.
- Type renvoyé
Sequence[bdd.Action]
.IA
¶
lg-rez / features / IA des réponses
Tout ce qui concerne la manière dont le bot réagit aux messages : détermination de la meilleure réaction, gestion des réactions, activation/désactivation des modes de chat
- lgrez.features.IA.fetch_tenor(trigger)[source]¶
Renvoie le GIF Tenor le plus « pertinent » pour un texte donné.
- async lgrez.features.IA.trigger_at_mj(message)[source]¶
Règle d’IA : réaction si le message mentionne les MJs.
- Paramètres
message (Message) – message auquel réagir.
- Renvoie
True
– si le message mentionne les MJ et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_roles(message, sensi=0.8)[source]¶
Règle d’IA : réaction si un nom de rôle est donné.
- Paramètres
message (Message) – message auquel réagir.
sensi (float) – sensibilité de la recherche (voir
bdd.base.TableMeta.find_nearest()
).
Trouve l’entrée la plus proche de
message.content
dans la tablebdd.Role
.- Renvoie
True
– si un rôle a été trouvé (sensibilité> sensi
) et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_reactions(message, chain=None, sensi=0.7, debug=False)[source]¶
Règle d’IA : réaction à partir de la table
bdd.Reaction
.- Paramètres
message (Message`) – message auquel réagir.
chain (str) – contenu auquel réagir (défaut : contenu de
message
).sensi (float) – sensibilité de la recherche (cf
bdd.base.TableMeta.find_nearest()
).debug (bool) – si
True
, affiche les erreurs lors de l’évaluation des messages (voirtools.eval_accols()
).
Trouve l’entrée la plus proche de
chain
dans la tablebdd.Reaction
; si il contient des accolades, évalue le message selon le contexte demessage
.- Renvoie
True
– si une réaction a été trouvé (sensibilité> sensi
) et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_sub_reactions(message, sensi=0.9, debug=False)[source]¶
Règle d’IA : réaction à partir de la table, mais sur les mots
Appelle
trigger_reactions(bot, message, mot, sensi, debug)
pour tous les motsmot
composantmessage.content
(mots de plus de 4 lettres, testés des plus longs aux plus courts).- Paramètres
message (Message`) – message auquel réagir.
sensi (float) – sensibilité de la recherche (cf
bdd.base.TableMeta.find_nearest()
).debug (bool) – si
True
, affiche les erreurs lors de l’évaluation des messages (voirtools.eval_accols()
).
- Renvoie
True
– si une réaction a été trouvé (sensibilité> sensi
) et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_di(message)[source]¶
Règle d’IA : réaction aux messages en di… / cri…
- Paramètres
message (Message) – message auquel réagir.
- Renvoie
True
– si le message correspond et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_gif(message)[source]¶
Règle d’IA : réaction par GIF en mode Foire à la saucisse.
- Paramètres
message (Message) – message auquel réagir
- Renvoie
True
– si le message correspond et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_mot_unique(message)[source]¶
Règle d’IA : réaction à un mot unique (le répète).
- Paramètres
message (Message) – message auquel réagir.
- Renvoie
True
– si le message correspond et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.trigger_a_ou_b(message)[source]¶
Règle d’IA : réaction à un motif type « a ou b » (répond « b »).
- Paramètres
message (Message) – message auquel réagir.
- Renvoie
True
– si le message correspond et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.default(message)[source]¶
Règle d’IA : réponse par défaut
- Paramètres
message (Message) – message auquel réagir.
- Renvoie
True
– si le message correspond et qu’une réponse a été envoyéeFalse
– sinon
- async lgrez.features.IA.process_IA(message, debug=False)[source]¶
Exécute les règles d’IA.
- Paramètres
message (Message) – message auquel réagir.
debug (bool) – si
True
, affiche les erreurs lors de l’évaluation des messages (voirtools.eval_accols()
).
- class lgrez.features.IA.GestionIA(*args, **kwargs)[source]¶
Commandes relatives à l’IA (réponses automatiques du bot)
Commandes définies dans ce cog :
- Commande
!stfu
- async stfu.callback(ctx, force=None)¶
Active/désactive la réponse automatique du bot sur ton channel privé
- Paramètres
force –
"start"
/"on"
/"stop"
/"off"
permet de forcer l’activation / la désactivation.
Sans argument, la commande active les réactions si désactivées et vice-versa ; avec un autre argument, elle le fait silencieusment.
N’agit que sur les messages classiques envoyés dans le channel : les commandes restent reconnues.
Si vous ne comprenez pas le nom de la commande, demandez à Google.
- Commande
- Commande
!fals
(alias!cancer
,!214
) - async fals.callback(ctx, force=None)¶
Active/désactive le mode « foire à la saucisse »
- Paramètres
force –
"start"
/"on"
/"stop"
/"off"
permet de forcer l’activation / la désactivation.
Sans argument, la commande active le mode si désactivé et vice-versa.
En mode « foire à la saucisse », le bot réagira à (presque) tous les messages, pas seulement sur les motifs qu’on lui a appris.
À utiliser à vos risques et périls !
- Commande
- Commande
!react
(alias!r
) - async react.callback(ctx, *, trigger)¶
Force le bot à réagir à un message
- Paramètres
trigger – texte auquel le bot doit réagir
Permet de faire appel à l’IA du bot même sur les chans publics, ou en mode STFU, etc.
Si utilisée par un MJ, active aussi le mode débug des évaluations Python (messages d’erreur).
- Commande
- Commande
!reactfals
(alias!rf
) - async reactfals.callback(ctx, *, trigger)¶
Force le bot à réagir à un message comme en mode Foire à la saucisse
- Paramètres
trigger – texte auquel le bot doit réagir
Permet de faire appel directement au mode Foire à la saucisse, même si il n’est pas activé / sur un chan public.
- Commande
- Commande
!addIA
- async addIA.callback(ctx, *, triggers=None)¶
Ajoute une règle d’IA (COMMANDE MJ/RÉDACTEURS)
- Paramètres
triggers – mot(s), phrase(s), ou expression(s) séparées par des points-virgules ou sauts de lignes (ne peut pas contenir de « > » ou « ; » hors séparateurs)
- Nouveau système d’ajout rapide :
!addIA trigger > reponse !addIA trig1 ; trig2 > reponse
- ou, si réponse à un message de contenu « trigger » :
!addIA > reponse (triggers = [trigger]) !addIA trig2 > reponse (triggers = [trigger, trig2])
Une sécurité empêche d’ajouter un trigger déjà existant.
Dans le cas où plusieurs expressions sont spécifiées, toutes déclencheront l’action demandée.
- Commande
- Commande
!listIA
- async listIA.callback(ctx, trigger=None, sensi=0.5)¶
Liste les règles d’IA reconnues par le bot (COMMANDE MJ/RÉDACTEURS)
- Args
- trigger (optionnel): mot/expression permettant de filter et
trier les résultats. SI
trigger
FAIT PLUS D’UN MOT, IL DOIT ÊTRE ENTOURÉ PAR DES GUILLEMETS !- sensi: sensibilité de détection (ratio des caractères
correspondants, entre 0 et 1) si trigger est précisé.
- Commande
- Commande
!modifIA
- async modifIA.callback(ctx, *, trigger=None)¶
Modifie/supprime une règle d’IA (COMMANDE MJ/RÉDACTEURS)
- Paramètres
trigger – mot/expression déclenchant la réaction à modifier/supprimer
Permet d’ajouter et supprimer des triggers, de modifier la réaction du bot (construction d’une séquence de réponses successives ou aléatoires) ou de supprimer la réaction.
- Commande
.informations
¶
lg-rez / features / Commandes informatives
Commandes donnant aux joueurs des informations sur le jeu, leurs actions, les joueurs en vie et morts…
- class lgrez.features.informations.Informations(*args, **kwargs)[source]¶
Commandes pour en savoir plus sur soi et les autres
Commandes définies dans ce cog :
- Commande
!roles
(alias!role
,!rôles
,!rôle
,!camp
,!camps
) - async roles.callback(ctx, *, filtre=None)¶
Affiche la liste des rôles / des informations sur un rôle
- Paramètres
filtre –
peut être
Le nom d’un camp pour les rôles le composant ;
Le nom d’un rôle pour les informations sur ce rôle.
Sans argument liste tous les rôles existants.
- Commande
- Commande
!rolede
- async rolede.callback(ctx, *, cible=None)¶
Donne le rôle d’un joueur (COMMANDE MJ)
- Paramètres
cible – le joueur dont on veut connaître le rôle
- Commande
- Commande
!quiest
- async quiest.callback(ctx, *, nomrole)¶
Liste les joueurs ayant un rôle donné (COMMANDE MJ)
- Paramètres
nomrole – le rôle qu’on cherche (doit être un slug ou un nom de rôle valide)
- Commande
- Commande
!infos
- async infos.callback(ctx)¶
Affiche tes informations de rôle / actions
Toutes les actions liées à ton rôle (et parfois d’autres) sont indiquées, même celles que tu ne peux pas utiliser pour l’instant (plus de charges, déclenchées automatiquement…)
- Commande
- Commande
!actions
- async actions.callback(ctx, *, cible=None)¶
Affiche et modifie les actions d’un joueur (COMMANDE MJ)
- Paramètres
cible – le joueur dont on veut voir ou modifier les actions
Avertissement
Commande expérimentale, non testée.
- Commande
- Commande
!vivants
(alias!joueurs
,!vivant
) - async vivants.callback(ctx)¶
Affiche la liste des joueurs vivants
Aussi dite : « liste des joueurs qui seront bientôt morts »
- Commande
- Commande
!morts
(alias!mort
) - async morts.callback(ctx)¶
Affiche la liste des joueurs morts
Aussi dite : « liste des joueurs qui mangent leurs morts »
- Commande
.inscription
¶
lg-rez / features / Process d’inscription
Étapes préliminaires pour les joueurs avant le début de saison
- async lgrez.features.inscription.new_channel(member)[source]¶
Crée et renvoie un nouveau salon privé.
Peut être étendue, mais toujours appeller cette fonction pour créer le chan en lui-même, au risque d’altérer le fonctionnement normal du bot.
- Paramètres
member (discord.Member) – le membre pour qui créer le salon.
- Renvoie
- async lgrez.features.inscription.register_on_tdb(joueur)[source]¶
Enregistre un joueur dans le Tableau de bord.
Peut être personnalisé à un autre système de gestion des joueurs.
- Paramètres
joueur (bdd.Joueur) – le joueur à enregistrer.
Note
Fonction asynchrone depuis la version 2.2.2.
- async lgrez.features.inscription.main(member)[source]¶
Routine d’inscription complète d’un joueur.
- Paramètres
member (
Member
) – joueur à inscrire.
Crée et paramètre le salon privé du joueur, lui pose des questions et l’inscrit en base.
Personalisation : voir
config.demande_chambre
,config.chambre_mj
,config.additional_inscription_step()
etconfig.debut_saison
.Commande appellée à l’arrivée sur le serveur, utiliser
!co
pour trigger cette commande depuis Discord.
.open_close
¶
lg-rez / features / Gestion des votes et actions
Ouverture / fermeture / rappels des votes et actions (+ refill)
- async lgrez.features.open_close.recup_joueurs(quoi, qui, heure=None)[source]¶
Renvoie les joueurs concernés par la tâche !quoi <qui> [heure].
- Paramètres
- Renvoie
Exemples
!open cond
-> joueurs avec droit de vote!close action 17h
-> joueurs dont l’action se termine à 17h
- class lgrez.features.open_close.OpenClose(*args, **kwargs)[source]¶
Commandes de gestion des votes et actions
Commandes définies dans ce cog :
- Commande
!open
- async open.callback(ctx, qui, heure=None, heure_chain=None)¶
Lance un vote / des actions de rôle (COMMANDE BOT / MJ)
- Paramètres
qui –
cond
pour le vote du condamné
maire
pour le vote du maire
loups
pour le vote des loups
action
pour les actions commençant à
heure
{id}
pour une action spécifique
heure –
si
qui == "cond"
,"maire"
ou"loup"
, programme en plus la fermeture àheure
(et un rappel 30 minutes avant) ;si
qui == "action"
, il est obligatoire : heure des actions à lancer (cf plus haut). Pour les actions, la fermeture est de toute façon programmée le cas échéant (trigger_fin
temporel
oudelta
).
Dans tous les cas, format
HHh
ouHHhMM
.heure_chain – permet de chaîner des votes : lance le vote immédiatement et programme sa fermeture à
heure
, en appellant!close
de sorte à programmer une nouvelle ouverture le lendemain àheure_chain
, et ainsi de suite. FormatHHh
ouHHhMM
.
Une sécurité empêche de lancer un vote ou une action déjà en cours.
Cette commande a pour vocation première d’être exécutée automatiquement par des tâches planifiées. Elle peut être utilisée à la main, mais attention à ne pas faire n’importe quoi (penser à envoyer / planifier la fermeture des votes, par exemple).
Exemples
!open maire
: lance un vote maire maintenant!open cond 19h
: lance un vote condamné maintenant et programme sa fermeture à 19h00 (ex. Juge Bègue)!open cond 18h 10h
: lance un vote condamné maintenant, programme sa fermeture à 18h00, et une prochaine ouverture à 10h qui se fermera à 18h, et ainsi de suite!open action 19h
: lance toutes les actions commençant à 19h00!open 122
: lance l’action d’ID 122
- Commande
- Commande
!close
- async close.callback(ctx, qui, heure=None, heure_chain=None)¶
Ferme un vote / des actions de rôle (COMMANDE BOT / MJ)
- Paramètres
qui –
cond
pour le vote du condamné
maire
pour le vote du maire
loups
pour le vote des loups
action
pour les actions se terminant à
heure
{id}
pour une action spécifique
heure –
si
qui == "cond"
,"maire"
ou"loup"
, programme en plus une prochaine ouverture àheure
(et un rappel 30 minutes avant) ;si
qui == "action"
, il est obligatoire : heure des actions à lancer (cf plus haut). Pour les actions, la prochaine est de toute façon programmée le cas échéant (cooldown à 0 et reste des charges).
Dans tous les cas, format
HHh
ouHHhMM
.heure_chain – permet de chaîner des votes : ferme le vote immédiatement et programme une prochaine ouverture à
heure
, en appellant!close
de sorte à programmer une nouvelle fermeture le lendemain àheure_chain
, et ainsi de suite. FormatHHh
ouHHhMM
.
Une sécurité empêche de fermer un vote ou une action qui n’est pas en cours.
Cette commande a pour vocation première d’être exécutée automatiquement par des tâches planifiées. Elle peut être utilisée à la main, mais attention à ne pas faire n’importe quoi (penser à envoyer / planifier la fermeture des votes, par exemple).
Exemples
!close maire
: ferme le vote condamné maintenant!close cond 10h
: ferme le vote condamné maintenant et programme une prochaine ouverture à 10h00!close cond 10h 18h
: ferme le vote condamné maintenant, programme une prochaine ouverture à 10h00, qui sera fermé à 18h, puis une nouvelle ouverture à 10h, etc!close action 22h
: ferme toutes les actions se terminant à 22h00!close 122
: ferme l’action d’ID 122
- Commande
- Commande
!remind
- async remind.callback(ctx, qui, heure=None)¶
Envoi un rappel de vote / actions de rôle (COMMANDE BOT / MJ)
- Paramètres
qui –
cond
pour le vote du condamné
maire
pour le vote du maire
loups
pour le vote des loups
action
pour les actions se terminant à
heure
{id}
pour une action spécifique
heure – ne sert que dans le cas où <qui> == « action » (il est alors obligatoire), contrairement à !open et !close. Format HHh ou HHhMM.
Le bot n’envoie un message qu’aux joueurs n’ayant pas encore voté / agi, si le vote ou l’action est bien en cours.
Cette commande a pour vocation première d’être exécutée automatiquement par des tâches planifiées. Elle peut être utilisée à la main, mais attention à ne pas faire n’importe quoi !.
Exemples
!remind maire
: rappelle le vote maire maintenant!remind action 22h
: rappelle toutes les actions se terminant à 22h00!remind 122
: rappelle l’action d’ID 122
- Commande
- Commande
!refill
- async refill.callback(ctx, motif, *, cible=None)¶
Recharger un/des pouvoirs rechargeables (COMMANDE BOT / MJ)
- Paramètres
motif –
"weekends"
,"forgeron"
,"rebouteux"
ou"divin"
(forcer le refill car les MJs tout-puissants l’ont décidé)cible –
"all"
ou le nom d’un joueur
- Commande
- Commande
!cparti
- async cparti.callback(ctx)¶
Lance le jeu (COMMANDE MJ)
Programme les votes condamnés quotidiens (avec chaînage) 10h-18h
Programme un vote maire 10h-18h
Programme les actions au lancement du jeu (choix de mentor…) et permanentes (forgeron)… à 19h
Crée les « actions de vote », sans quoi !open plante
À utiliser le jour du lancement après 10h (lance les premières actions le soir et les votes le lendemain)
- Commande
.sync
¶
lg-rez / features / Synchronisation GSheets
Récupération et application des données des GSheets : modifications décidées via le Tableau de bord et rôles
- class lgrez.features.sync.TDBModif(id, col, val, row, column)[source]¶
Modification flag sur le Tableau de bord, à appliquer.
- val¶
Nouvelle valeur.
- Type
Any
Sous-classe de
gsheets.Modif
.
- lgrez.features.sync.transtype(value, cst)[source]¶
Utilitaire : caste une donnée brute d’un GSheet selon sa colonne.
- Paramètres
value (Any) – valeur à transtyper.
cst (
sqlalchemy.schema.Column
|bdd.base.TableMeta
|sqlalchemy.orm.RelationshipProperty
) – colonne, table ou relationship (many-to-one) associée.
Types pris en charge dans le cas d’une colonne :
sqlalchemy.types.String
et dérivés (Text
,Varchar
…)sqlalchemy.types.Integer
et dérivés (BigInteger
…)
Dans le cas d’une table ou d’une relation many-to-one vers une table,
value
est interprété comme la clé primaire de la table / de la table liée. Les valeurs interprétéesNone
ne sont pas acceptées, même dans le cas d’une relation avec contrainte One-to-many faite nullable.- Renvoie
L’objet Python correspondant au type de la colonne / table liée (
str
,int
,bool
,datetime.time
,enum.Enum
,bdd.base.TableBase
) ouNone
- Lève
ValueError – la conversion n’est pas possible (ou
value
est évaluéeNone
et la colonne n’est pas nullable)TypeError – type de colonne non pris en charge.
- async lgrez.features.sync.get_sync()[source]¶
Récupère les modifications en attente sur le TDB.
Charge les données du Tableau de bord (variable d’environment
LGREZ_TDB_SHEET_ID
), compare les informations qui y figurent avec celles de la base de données (bdd.Joueur
).Supprime les joueurs en base absents du Tableau de bord, lève une erreur dans le cas inverse, n’applique aucune autre modification.
Note
Fonction asynchrone depuis la version 2.2.2.
- async lgrez.features.sync.validate_sync(modifs)[source]¶
Valide des modificatons sur le Tableau de bord (case plus en rouge).
Modifie sur le Tableau de bord (variable d’environment
LGREZ_TDB_SHEET_ID
) et applique les modifications contenues dansmodifs
.Note
Fonction asynchrone depuis la version 2.2.2.
- async lgrez.features.sync.modif_joueur(joueur_id, modifs, silent=False)[source]¶
Attribue les modifications demandées au joueur
- Paramètres
- Renvoie
La liste des modifications appliquées et le changelog textuel associé (pour log global).
- Type renvoyé
- Lève
ValueError – pas de joueur d’ID
joueur_id
en base
Pour chaque modification dans
modifs
, applique les conséquences adéquates (rôles, nouvelles actions, tâches planifiées…) et informe le joueur sisilent
vautFalse
.
- class lgrez.features.sync.Sync(*args, **kwargs)[source]¶
Commandes de synchronisation des GSheets vers la BDD et les joueurs
Commandes définies dans ce cog :
- Commande
!sync
- async sync.callback(ctx, silent=False)¶
Récupère et applique les modifs du Tableau de bord (COMMANDE MJ)
- Paramètres
silent – si spécifié (quelque soit sa valeur), les joueurs ne sont pas notifiés des modifications.
Cette commande va récupérer les modifications en attente sur le Tableau de bord (lignes en rouge), modifer la BDD, et appliquer les modificatons dans Discord le cas échéant : renommage des utilisateurs, modification des rôles…
- Commande
- Commande
!fillroles
- async fillroles.callback(ctx)¶
Remplit les tables et #roles depuis le GSheet ad hoc (COMMANDE MJ)
Remplit les tables
bdd.Camp
,bdd.Role
,bdd.BaseAction
etbdd.BaseCiblage
avec les informations du Google Sheets « Rôles et actions » (variable d’environnementLGREZ_ROLES_SHEET_ID
) ;Vide le chan
#roles
puis le remplit avec les descriptifs de chaque rôle et camp.
Utile à chaque début de saison / changement dans les rôles/actions. Met à jour les entrées déjà en base, créé les nouvelles, supprime celles obsolètes.
- Commande
.taches
¶
lg-rez / features / Tâches planifiées
Planification, liste, annulation, exécution de tâches planifiées
- class lgrez.features.taches.GestionTaches(*args, **kwargs)[source]¶
Commandes de planification, exécution, annulation de tâches
Commandes définies dans ce cog :
- Commande
!planif
(alias!doat
) - async planif.callback(ctx, quand, *, commande)¶
Planifie une tâche au moment voulu (COMMANDE MJ)
- Paramètres
quand – format
[<J>/<M>[/<AAAA>]-]<H>:<M>[:<S>]
, avec<J>
,<M>
,<AAAA>
,<H>
et<M>
des entiers et<S>
un entier/flottant optionnel. La date est optionnelle (défaut : date du jour). Si elle est précisée, elle doit être séparée de l’heure par un tiret et l’année peut être omise ;commande – commande à exécuter (commençant par un
!
). La commande sera exécutée PAR UN WEBHOOK dans LE CHAN#logs
: toutes les commandes qui sont liées au joueur ou réservées au chan privé sont à proscrire (ou doivent a minima être précédées de!doas cible
)
Cette commande repose sur l’architecture en base de données, ce qui garantit l’exécution de la tâche même si le bot plante entre temps.
Si le bot est down à l’heure d’exécution prévue, la commande sera exécutée dès le bot de retour en ligne.
Si la date est dans le passé, la commande est exécutée immédiatement.
Exemples
!planif 18:00 !close maire
!planif 13/06-10:00 !open maire
!planif 13/06/2020-10:00 !open maire
!planif 23:25:12 !close maire
- Commande
- Commande
!delay
(alias!retard
,!doin
) - async delay.callback(ctx, duree, *, commande)¶
Exécute une commande après XhYmZs (COMMANDE MJ)
- Paramètres
quand – format
[<X>h][<Y>m][<Z>s]
, avec<X>
(heures) et<Y>
(minutes) des entiers et<Z>
(secondes) un entier ou un flottant. Chacune des trois composantes est optionnelle, mais au moins une doit être présente ;commande – commande à exécuter (commençant par un
!
). La commande sera exécutée PAR UN WEBHOOK dans LE CHAN#logs
: toutes les commandes qui sont liées au joueur ou réservées au chan privé sont à proscrire (ou doivent être précédées d’un!doas <cible>
).
Cette commande repose sur l’architecture en base de données, ce qui garantit l’exécution de la commande même si le bot plante entre temps.
Si le bot est down à l’heure d’exécution prévue, la commande sera exécutée dès le bot de retour en ligne.
Exemples
!delay 2h !close maire
!delay 1h30m !doas @moi !vote Yacine Oussar
- Commande
- Commande
!cancel
- async cancel.callback(ctx, *ids)¶
Annule une ou plusieurs tâche(s) planifiée(s) (COMMANDE MJ)
- Paramètres
*ids – IDs des tâches à annuler, séparées par des espaces.
Utiliser
!taches
pour voir la liste des IDs.
- Commande
.voter_agir
¶
lg-rez / features / Tâches planifiées
Planification, liste, annulation, exécution de tâches planifiées
- async lgrez.features.voter_agir.export_vote(vote, utilisation)[source]¶
Enregistre un vote/les actions résolues dans le GSheet ad hoc.
Écrit dans le GSheet
LGREZ_DATA_SHEET_ID
. Peut être écrasé pour une autre implémentation.- Paramètres
vote (bdd.Vote) – le vote concerné, ou
None
pour une action.utilisation (bdd.Utilisation) – l’utilisation qui vient d’être effectuée. Doit être remplie (
bdd.Utilisation.is_filled
).
- Lève
RuntimeError – si la variable d’environnement
LGREZ_DATA_SHEET_ID
n’est pas définie.
Note
Fonction asynchrone depuis la version 2.2.2.
- async lgrez.features.voter_agir.get_cible(ctx, action, base_ciblage, first=None)[source]¶
Demande une cible à l’utilisateur.
- Paramètres
ctx (Context) – le contexte de commande.
action – (.bdd.Action): action pour laquelle on cherche une cible.
base_ciblage (bdd.BaseCiblage) – ciblage à demander.
first (str) – proposition initale du joueur (passée comme argument d’une commande).
- Renvoie
La cible sélectionnée, selon le type de ciblage.
- Type renvoyé
Union[bdd.Joueur, bdd.Role, bdd.Camp, bool, str]
Réalise les interactions adéquates en fonction du type du base_ciblage, vérifie le changement de cible le cas échéant.
- class lgrez.features.voter_agir.VoterAgir(*args, **kwargs)[source]¶
Commandes de vote et d’action de rôle
Commandes définies dans ce cog :
- Commande
!vote
- async vote.callback(ctx, *, cible=None)¶
Vote pour le condamné du jour
- Paramètres
cible – nom du joueur contre qui tu veux diriger ton vote.
Cette commande n’est utilisable que lorsqu’un vote pour le condamné est en cours, pour les joueurs ayant le droit de voter.
Le bot t’enverra un message à l’ouverture de chaque vote.
La commande peut être utilisée autant que voulu pour changer de cible tant que le vote est en cours.
- Commande
- Commande
!votemaire
- async votemaire.callback(ctx, *, cible=None)¶
Vote pour le nouveau maire
- Paramètres
cible – nom du joueur pour lequel tu souhaites voter.
Cette commande n’est utilisable que lorsqu’une élection pour le maire est en cours, pour les joueurs ayant le droit de voter.
Le bot t’enverra un message à l’ouverture de chaque vote.
La commande peut être utilisée autant que voulu pour changer de cible tant que le vote est en cours.
- Commande
- Commande
!voteloups
- async voteloups.callback(ctx, *, cible=None)¶
Vote pour la victime de l’attaque des loups
- Paramètres
cible – nom du joueur que tu souhaites éliminer.
Cette commande n’est utilisable que lorsqu’une vote pour la victime du soir est en cours, pour les joueurs concernés.
Le bot t’enverra un message à l’ouverture de chaque vote.
La commande peut être utilisée autant que voulu pour changer de cible tant que le vote est en cours.
- Commande
- Commande
!action
- async action.callback(ctx, *, decision=None)¶
Utilise l’action de ton rôle / une des actions associées
- Paramètres
decision –
ce que tu souhaites faire.
Dans le cas où tu as plusieurs actions disponibles, ce paramètre n’est pas pris en compte pour éviter toute ambiguïté.
Cette commande n’est utilisable que si tu as au moins une action ouverte. Action = pouvoir associé à ton rôle, mais aussi pouvoirs ponctuels (Lame Vorpale, Chat d’argent…) Le bot t’enverra un message à l’ouverture de chaque action.
La commande peut être utilisée autant que voulu pour changer d’action tant que la fenêtre d’action est en cours, SAUF pour certaines actions (dites « instantanées ») ayant une conséquence immédiate (Barbier, Licorne…). Le bot mettra dans ce cas un message d’avertissement.
- Commande