Difference between revisions of "Gründer Scripting"
(→Les commandes) |
(→Les commandes) |
||
Line 148: | Line 148: | ||
Cette commande répète n fois la commande. Elle place le numéro de l'itération (de 0 à n-1) dans $0. | Cette commande répète n fois la commande. Elle place le numéro de l'itération (de 0 à n-1) dans $0. | ||
+ | |||
'''Remarque''' : Si la commande est un texte à envoyer dans le chat, n est limité à 6, pour éviter spam. Faites toujours très attention avec cette commande, puisqu'elle pourrait bien faire crasher le bot... | '''Remarque''' : Si la commande est un texte à envoyer dans le chat, n est limité à 6, pour éviter spam. Faites toujours très attention avec cette commande, puisqu'elle pourrait bien faire crasher le bot... |
Revision as of 23:33, 20 October 2018
Pour pouvoir réaliser plus de trucs avec !chatbot, j'ai ajouté quelques commandes dont la syntaxe est hyper chiante, alors accrochez vous.
Contents
Principes de bases
Tout d'abord, il y a deux principes de base qui sont valides pour toute commande : le premier concerne l'accumulation de commande, et le deuxième porte sur les arguments.
Accumulation de commandes
Dans cet article seront décrite plusieurs commandes qui, après avoir fait quelque chose, lanceront une autre commande. Cette autre commande doit être passée en argument à la première commande. Prenons l'exemple de la commande !in
qui exécute la dite autre commande après un temps donné :
-
§in 5s, !am db_ah
Cette commande jouera le fameux "AH !" de Denis 5 secondes après qu'elle ait été envoyée. On utilise ici le § parce-que le 2ème argument de !in
est la commande à lancer après le temps donné. Mais cela n'est pas nécessaire; en effet : la commande !in
ne s’attend à rien d'autre que le temps et la commande ! Par conséquent, on peut très bien utiliser '!' à la place de '§' puisque tout ce qui est après le temps sera concaténé. Donc,
-
!in 5s !am db_ah
aura le même effet, et est plus simple à lire. En revanche, cela n'est plus valide pour une commande telle que !script
, qui exécute tour à tour les commande qui lui sont passées en argument :
-
§script !am db_ah, !am r_issou
Ceci exécutera !am db_ah
puis !am r_issou
. Ici, évidemment, on est obligé d'utiliser §, sans quoi !script ne saura pas faire la séparation entre les commandes à lancer.
-
!script !am db_ah !am r_issou
(invalide)
Aura pour effet :
- De lancer
!am
sans argument (causera une erreur) - D'écrire dans le chat 'db_ah'
- De re-lancer
!am
sans argument (causera à nouveau une erreur) - D'écrire dans le chat 'r_issou'
Les tokens $x, x étant un chiffre
Vous vous souvenez de la commande !chatbot qui remplaçait $0, $1, etc... par les groupes capturés par l'expression régulière ? Ce système de "remplaçage" ne lui est pas propre. D'autres commande se servent de ce mécanisme pour faire passer des valeurs quelconques aux commandes qu'elles exécutent. Prenons !random
:
-
!random 1 6 Le résultat est $0
Cette commande génère un nombre entier entre 1 (inclus) et 6 (exclu), puis appelle la commande donnée. Ici, il ne s'agît pas d'une commande mais d'un message dans le chat, peu importe : le résultat est que $0 sera remplacé par le résultat de la commande !random
.
Mais que se passe-t-il lorsque l'on accumule plusieurs commandes qui ont "une valeur de retour" ?
-
!random 1 6 !random 1 6 Le premier nombre est $0 et le deuxième $0
(invalide)
Les deux nombre seront toujours les mêmes. Que se passe-t-il ?
- La première commande est exécutée. Elle choisi un nombre au hasard, notons la x.
- Dans la commande qu'elle se doit d'exécuter, elle remplace tous les $0 par x. Ainsi, la commande sera
!random 1 6 Le premier nombre est x et le deuxième x
- La deuxième commande est exécutée. Elle choisi le nombre y.
- Dans la commande qu'elle se doit d'exécuter (juste envoyer un message), elle remplace tous les $0 par y. Problème : il n'y a pas d’occurrence de $0. Donc, rien ne sera changé, et 'Le premier nombre est x et le deuxième x' sera envoyé dans le chat.
Pour y remédier, il faut échapper le second $0 :
-
!random 1 6 !random 1 6 Le premier nombre est $0 et le deuxième $$0
Là, ça marche. Détaillons tout de même ce qui se passe :
- La première commande est exécutée. Elle choisi un nombre au hasard x.
- Dans la commande qu'elle se doit d'exécuter, elle remplace tous les $0 par x sauf ceux qui sont échappés. Ainsi, la commande sera
!random 1 6 Le premier nombre est x et le deuxième $0
- La deuxième commande est exécutée. Elle choisi le nombre y.
- Dans la commande qu'elle se doit d'exécuter (le message), elle remplace tous les $0 par y. On aura donc 'Le premier nombre est x et le deuxième y' comme on s'y attendait.
Les commandes
!chatbot
Permet d’exécuter une commande lorsqu'un pattern est détecté dans le message. Cette commande est complexe et est décrite plus en détail [Gründer Chatbot|ici].
!if
Syntaxe :
-
!if cond !commande à exécuter
Exécutera la commande passée en argument, à moins que 'cond' ne soit 0, false, ou vide.
!ifelse
Syntaxe :
-
§ifelse cond, !commande si vrai, !commande si faux
Si 'cond' est 0, false, ou est vide, alors !commande si faux
sera exécuté. Sinon, !commande si vrai
sera lancé.
!ifnot
Syntaxe :
-
!ifnot cond !commande à exécuter
Exécutera la commande passée en argument uniquement si 'cond' est soit 0, false, ou est vide.
!in
Syntaxe :
-
!in temps(ms|s|m|h) !commande à exécuter
Exécutera la commande passée en argument après que le temps indiqué soit écoulé. Le temps doit être un nombre entier suivi d'une unité accolée. Exemples :
Texte | Interprétation |
---|---|
758ms | 758 millisecondes |
3s | 3 secondes |
12m | 12 minutes |
2h | 2 heures |
13 s | INVALIDE: l'espace ne doit pas être présent |
7.0s | INVALIDE: même si la partie fractionnelle est nulle, 7.0 n'est pas considéré comme un nombre entier. |
!macro
Syntaxe :
-
!macro add nom !commande à executer
-
!macro exec nom param0 param1 param2 etc...
-
!macro delete nom
La syntaxe 1 permet d'ajouter une macro nommée "nom". Lorsqu'elle est appelée, $0 sera remplacé par le premier paramètre, $1 par le deuxième, etc...
La syntaxe 2 permet d'appeler une macro nommée "nom".
La syntaxe 3 permet de supprimer la macron "nom".
Remarque : Les macro sont sauvegardées (et donc persistantes au redémarrage de Gründer).
!math
Syntaxe :
-
!math a opérateur b !commande à exécuter
Fait un calcul, et appel la commande à exécuter en plaçant le résultat du calcul dans $0. Voici les opérateurs supportés :
Opérateur | Opération |
---|---|
+ | Additionne a et b |
- | Soustrait b à a |
* | Multiplie a et b |
/ | Divise a par b |
% | Calcule le reste de la division de a par b |
^ | Calcule a puissance b |
Remarque : un i
peut être accolé à l'opérateur pour caster le résultat en un entier. Par exemple :
-
!math 1 / 2
retournera 0.5 -
!math 1 /i 2
retournera 0
!random
Syntaxe :
-
!random min max !commande à exécuter
Cette commande génère un nombre entier compris entre min (inclus) et max (exclu), et place le résultat dans $0.
!repeat
Syntaxe :
-
!repeat n !commande à exécuter
Cette commande répète n fois la commande. Elle place le numéro de l'itération (de 0 à n-1) dans $0.
Remarque : Si la commande est un texte à envoyer dans le chat, n est limité à 6, pour éviter spam. Faites toujours très attention avec cette commande, puisqu'elle pourrait bien faire crasher le bot...