No results
2
Scripting-IRC
Claude edited this page 2026-05-16 12:31:27 +02:00
Table of Contents
- Scripting IRC (NoxScript)
- Syntaxe
- Déclaration d'événement
- Alias (commande personnalisée)
- Variables
- Conditions
- Timer (délai en secondes)
- Variables d'événement
- Commandes disponibles
- Événements disponibles
- Mots-clés du langage
- Exemples
- Accueil automatique
- Anti-flood basique
- Répondeur automatique aux messages privés
- Commande personnalisée
- Timer avec action différée
- Gestion des scripts
- Contraintes et sécurité
Scripting IRC (NoxScript)
NoxIRC dispose d'un langage de scripting personnalisé NoxScript pour automatiser des actions IRC côté serveur. Les scripts sont déclenchés par des événements IRC en temps réel.
Syntaxe
Déclaration d'événement
on <event> {
// code exécuté à chaque déclenchement
}
Alias (commande personnalisée)
alias <nom> {
// code
}
Variables
let x = "valeur"
let n = 42
Conditions
if $variable == "test" {
msg #chan "c'est test"
} else {
msg #chan "autre chose"
}
Timer (délai en secondes)
timer 5 {
msg $chan "5 secondes passées !"
}
Variables d'événement
Accessibles avec le préfixe $ dans un handler on :
| Variable | Description |
|---|---|
$nick |
Nick de l'utilisateur ayant déclenché l'événement |
$chan |
Channel concerné |
$message |
Contenu du message |
$me |
Ton propre nick |
$network |
Nom du réseau IRC |
Commandes disponibles
| Commande | Syntaxe | Description |
|---|---|---|
msg |
msg <cible> <texte> |
Envoyer un message (channel ou nick) |
notice |
notice <cible> <texte> |
Envoyer une notice IRC |
kick |
kick <channel> <nick> [raison] |
Kicker un utilisateur |
mode |
mode <channel> <modes> |
Changer les modes du channel |
sleep |
sleep <secondes> |
Attendre |
echo |
echo <texte> |
Afficher dans la console de script |
Événements disponibles
| Événement | Variables disponibles | Description |
|---|---|---|
text |
$nick, $chan, $message |
Message reçu dans un channel |
private |
$nick, $message |
Message privé reçu |
highlight |
$nick, $chan, $message |
Mention de ton nick |
join |
$nick, $chan |
Un utilisateur rejoint un channel |
part |
$nick, $chan |
Un utilisateur quitte un channel |
Mots-clés du langage
on, alias, if, else, timer, let
Exemples
Accueil automatique
on join {
if $chan == "#general" {
msg $chan "Bienvenue $nick !"
}
}
Anti-flood basique
on text {
if $message == "!flood" {
kick $chan $nick "Flood interdit"
}
}
Répondeur automatique aux messages privés
on private {
msg $nick "Je suis absent. Réessaie plus tard."
}
Commande personnalisée
alias bonjour {
msg $chan "Bonjour tout le monde !"
}
Timer avec action différée
on text {
if $message == "!minuteur" {
msg $chan "Minuteur de 10 secondes lancé !"
timer 10 {
msg $chan "Temps écoulé !"
}
}
}
Gestion des scripts
Via Paramètres → Scripts :
- Créer un script (nom + code)
- Test dry-run : simuler sans envoyer sur IRC
- Associer à un réseau spécifique (ou vide = tous réseaux)
- Activer/désactiver sans supprimer
Via l'API
# Créer
curl -X POST /api/scripts \
-H "Authorization: Bearer <token>" \
-d '{"name": "Accueil", "code": "on join { msg $chan \"Bienvenue $nick !\" }"}'
# Tester
curl -X POST /api/scripts/test \
-H "Authorization: Bearer <token>" \
-d '{"code": "...", "event": "text", "context": {"nick": "Bob", "chan": "#test", "message": "hello"}}'
Contraintes et sécurité
- Timeout : 3 secondes max par handler
- Validation syntaxique : au moment de la sauvegarde, code rejeté si invalide
- Pas d'accès réseau : les scripts ne peuvent pas faire de requêtes HTTP (contrairement aux plugins)
- Isolation : chaque script tourne dans son propre scope de variables