Aller au contenu
Afficher dans l'application

Une meilleure façon de naviguer. En savoir plus.

Asterobot

Une application plein écran sur votre écran d'accueil avec notifications push, badges et plus encore.

Pour installer cette application sur iOS et iPadOS
  1. Appuyez sur Icône de partage dans Safari
  2. Faites défiler le menu et appuyez sur Ajouter à l'écran d'accueil.
  3. Appuyez sur Ajouter dans le coin supérieur droit.
Pour installer cette application sur Android
  1. Appuyez sur le menu à trois points (⋮) dans le coin supérieur droit du navigateur.
  2. Appuyez sur Ajouter à l'écran d'accueil ou Installer l'application.
  3. Confirmez en appuyant sur Installer.

Alarmes

Décidez de la suite quand un membre de l'équipe, un message privé, le nom du personnage, un événement du module de chat ou n'importe quel message du jeu atteint l'un de vos bots : les événements que suivent les alarmes, les règles par défaut, écrire les vôtres sur la page Alarmes avec des conditions sur l'événement, chaque réaction, les notifications dans Asteroboard ou sur n'importe quel service web par une simple requête HTTP, et les dernières alarmes.

Une alarme suit ce qui arrive à vos bots : un membre de l'équipe qui parle à l'un d'eux, l'avertit, le rend muet ou se tient sur sa carte, un joueur qui lui écrit en privé, le nom de son personnage dit dans un canal, les événements du module de chat, et tout message que le jeu lui envoie et que vous choisissez d'intercepter. Ses règles disent la suite : une notification dans Asteroboard ou sur n'importe quel service web, le chat en pause, une phrase dite, un paquet lancé, le script arrêté, un message du jeu envoyé, le bot déconnecté. Les règles sont une seule liste pour tout Asterobot, et chaque règle peut surveiller tous les bots ou certains.

Les alarmes marchent que le module de chat soit allumé ou éteint : elles lisent le même chat que la Console.

Ce que suivent les alarmes

Événement Quand
Modération Un membre de l'équipe parle dans un canal que lit le personnage, lui envoie un avertissement, le rend muet, ou se tient sur sa carte. Une même personne le déclenche au plus une fois par minute pour la même raison, et une fois par carte où elle se tient.
Message privé Un joueur écrit en privé au personnage. Un message privé d'un de vos propres bots, ou d'un joueur que le personnage ignore, n'en est pas un.
Nom cité Le nom du personnage est dans une ligne dite dans un canal, comme un mot entier, quels que soient ses majuscules et ses accents : « salut héro ! » cite Hero, « superheroes » non. Une ligne d'un de vos propres bots, ou d'un joueur que le personnage ignore, n'en est pas une.
Trop de spam Le serveur dit « Trop de spam ! » : le garde du module de chat recule.
Phrase refusée Un canal refuse une des lignes du bot.
Épuisé Un objet qu'une annonce lie est épuisé.
Annonce arrêtée Une annonce a atteint sa condition d'arrêt.
Tous les déclencheurs L'action raise d'un déclencheur de chat. trigger:wtb est l'événement d'un seul déclencheur : voir Profils de chat.
Tous les événements de script Le raise() d'un script. script:found est un seul événement de script : voir la référence asterobot:alarms.
game: et le nom d'un message Le jeu envoie ce message au bot : voir Messages du jeu.

Un membre de l'équipe est reconnu comme le fait le client du jeu : une ligne que le serveur marque comme celle d'un administrateur ou dite dans le canal de l'équipe, une fenêtre d'avertissement, un mutisme, et sur la carte, un personnage dont le rôle de compte n'est pas celui d'un joueur.

Chaque événement dit quelque chose : qui et quoi, dans des champs. Les conditions d'une règle et les textes de ses réactions les lisent.

Événement Champs
Modération reason (line, warning, mute ou map), who, channel, text, les minutes d'un mutisme, role sur la carte
Message privé sender, text
Nom cité channel, sender, text
Trop de spam minutes
Phrase refusée channel, reason
Épuisé ad, item
Annonce arrêtée ad
Celui d'un déclencheur trigger, channel, sender, text
Celui d'un script name, text
Celui d'un message du jeu ses champs, voir Messages du jeu

Les règles par défaut

Tant que vous ne les changez pas, deux règles s'appliquent :

Règle Événements Réactions
Staff Modération Mettre le chat en pause pour 30 minutes, puis Notifier toutes les destinations.
Messages Message privé, Nom cité Notifier Asteroboard.

La page Alarmes les montre avec Les règles par défaut : enregistrées au premier changement : la première fois que vous enregistrez, elles sont écrites dans un fichier qui est alors le vôtre.

La page Alarmes

Ouvrez Alarmes dans le menu d'Asteroboard. La page montre le formulaire des règles à gauche et leur JSON à droite, tous deux en direct, comme dans l'éditeur de profils de chat. Sauvegarder envoie les règles à Asterobot, qui les vérifie et nomme le champ en cause de ce qu'il refuse ; Annuler les changements remet les règles telles qu'enregistrées. Quitter la page avec des changements non enregistrés demande d'abord.

Ajouter une règle en ajoute une à la fin. Les règles s'appliquent dans l'ordre ; les flèches en montent ou en descendent une.

Champ Ce qu'il fait
L'interrupteur Active ou désactive la règle sans la supprimer.
Le nom Son nom, affiché avec chaque alarme qu'elle déclenche. Chaque règle a besoin d'un nom à elle.
Événements Les événements qu'elle prend. Tapez-en un pour l'ajouter : game:CharacterLevelUpEvent, trigger:wtb, script:found.
Bots Les bots qu'elle surveille. Tous les bots quand aucun n'est choisi.
Condition Ce que doivent valoir les champs de l'événement : voir Condition. Tous les événements quand elle est vide.
Au plus une fois toutes les La règle se déclenche au plus une fois pendant ce temps pour chaque bot. À chaque fois quand c'est vide.
Réactions Ce qu'elle fait, dans l'ordre. Ajouter une réaction en choisit une.

Quand plusieurs règles prennent le même événement, chacune se déclenche, côte à côte, et une réaction que deux règles demandent pour le même événement, avec les mêmes réglages, n'est faite qu'une fois. Une règle qui répète une réaction, un message, une attente et le même message, la fait à chaque fois. Attendre ne retient que la suite de sa propre règle. Une règle que vous désactivez ou supprimez pendant son Attendre ne fait plus rien ensuite, et la console du bot le dit.

Condition

Ajouter un champ ajoute une condition sur un des champs de l'événement. Toutes doivent être vraies pour que la règle se déclenche ; pour un « ou », écrivez deux règles.

Condition Vraie quand le champ...
vaut est égal à la valeur, les nombres comme des nombres : 10017 vaut 10017.0.
vaut l'un de est égal à l'une des valeurs.
contient contient le texte, sans tenir compte des majuscules ni des accents : bot est dans « Tu es un BÔT ? ».
est au-dessus de, est en dessous de est un nombre au-dessus ou en dessous.
est entre est un nombre au-dessus du premier et en dessous du second.

Un champ que l'événement n'a pas rend la condition fausse. Par exemple, une règle qui prend Modération avec reason vaut mute ne se déclenche que sur un mutisme.

Messages du jeu

Une règle peut prendre n'importe quel message que le jeu envoie au bot : tapez game: et le nom du message dans Événements, comme game:CharacterLevelUpEvent. Chaque fois que le jeu envoie ce message au bot, la règle le prend, avec les champs du message.

  • Noms : le nom d'un message et ceux de ses champs sont les noms lisibles de la référence du protocole de Dofus, avec des tirets bas : new_level. L'outil Réseau du bot montre les messages que le jeu envoie vraiment, avec de vraies valeurs. Un nom que le protocole n'a pas est refusé à l'enregistrement.
  • Champs : un champ imbriqué s'écrit avec des points, l'élément d'une liste avec son indice : author.name, parameters.0. json est le message entier, en JSON.
  • Coût : un message qu'aucune règle ne nomme ne coûte rien. Seuls les messages que vos règles nomment sont lus en champs.
  • Sens : seulement ce que le jeu envoie au bot. Les requêtes du bot lui-même ne sont pas suivies.

Par exemple, pour être prévenu quand un personnage atteint le niveau 200 : Événements game:CharacterLevelUpEvent, Condition new_level est au-dessus de 199, Réactions Notifier.

Certains champs ont encore de courts noms brouillés, comme galg : Asterobot ne sait pas encore ce qu'ils contiennent, et leurs noms peuvent changer avec une mise à jour du jeu, alors ne bâtissez pas de règle dessus.

Les réactions

Réaction Ce qu'elle fait
Notifier Envoie l'alarme à ses destinations : Toutes les destinations quand aucune n'est choisie. Asteroboard est intégrée, voir Notifications, et vous ajoutez les vôtres, voir Destinations.
Mettre le chat en pause Retient les lignes des annonces et des scripts du bot pendant ce temps, comme Arrêter l'envoi, et abandonne celles en attente. La console dit Alarm: the chat is paused for 30 minutes.
Dire Dit une ligne dans un canal, à travers le garde du bot.
Écrire en privé Écrit une ligne en privé à un personnage : À un nom, ou vide pour le joueur dont le message privé ou la ligne a déclenché l'alarme.
Lancer Lance un paquet sur le bot, sa plus récente version installée, à la place du script qu'il exécute : sur la modération, un paquet qui emmène le personnage dans un coin tranquille. Vide, Son propre script, relance le script du bot. Son planning le laisse tranquille jusqu'à sa prochaine plage. La console dit Alarm: playing et le paquet.
Arrêter le script Arrête le script du bot, et son trajet s'il en fait un. Son planning le laisse tranquille jusqu'à sa prochaine plage. La console dit Alarm: stopping the script.
Attendre Attend ce temps avant la réaction suivante de la règle : Arrêter le script, Attendre 10 minutes, Lancer son propre script fait une pause de 10 minutes.
Envoyer un message du jeu Envoie un message au jeu, comme le fait le send() d'un script : le nom du message, et ses champs en JSON, dont les textes lisent les variables de l'alarme. Il passe à côté du garde du module de chat.
Écrire dans la console Écrit une ligne dans la console du bot, en avertissement : Modération sur la carte : {who}.
Activer un drapeau Lève un drapeau que les profils de chat du bot lisent dans leurs conditions, pendant ce temps, ou jusqu'à la fin de la session de jeu quand c'est vide : sur la modération, un drapeau quiet qui arrête les annonces écrites avec « pas le drapeau quiet ».
Déconnecter Sort le bot du jeu, et le ramène après Revenir après, sauf si c'est vide. Un bot avec un planning ne revient que si sa plage n'est pas finie entre-temps. La console dit Alarm: disconnecting, puis Alarm: coming back at 21:30:00. Sur une session relayée, elle ne fait rien, puisque c'est la personne qui joue qui décide : not done on a relayed session: the person playing it decides.

Une ligne à dire ou à écrire en privé est un modèle de message, et lit les variables de l'alarme en plus de celles du personnage : chaque champ de l'événement, {sender}, {text}, {who}, {channel}, {minutes}..., et {bot}, {character}, {rule}, {event}. Celles du personnage passent d'abord : dans une ligne, {name}, {server} et {time} sont le nom, le serveur et l'heure du personnage. Par exemple {Désolé|Salut} {sender}, je suis occupé pour l'instant. La ligne d'une alarme passe par le garde comme toute autre, mais une pause ne la retient pas.

Une ligne de console et les textes d'un message du jeu ne lisent que les variables de l'alarme : chaque champ de l'événement, et {bot}, {character}, {server}, {rule}, {event}, et {time}, la date et l'heure de l'événement, comme 2026-10-28T14:05:09+01:00. Une variable que l'événement n'a pas y est vide, et les accolades qui ne nomment aucune variable restent telles quelles.

Une réaction qui ne peut pas être faite écrit pourquoi dans la console du bot, Alarm Staff: play failed: no package "@me:hide" is installed, apparaît dans les Dernières alarmes, et la règle continue.

Notifications

Une réaction Notifier avec la destination Asteroboard affiche une notification dans chaque Asteroboard ouvert, quelle que soit la page : « Nom-du-bot : un membre de l'équipe », « Nom-du-bot : message privé de Nom-du-joueur », « Nom-du-bot : Nom-du-joueur cite le nom du personnage », « Nom-du-bot : trop de spam, le chat attend 5 minutes », et pour celui d'un déclencheur, d'un script ou d'un message du jeu, le nom de l'événement, avec ce qui a été dit. Celle d'un membre de l'équipe reste jusqu'à ce que vous la fermiez. Ouvrir mène à la page du bot.

Destinations

En plus d'Asteroboard, une réaction Notifier peut joindre n'importe quel service web : une application de discussion, un service de notifications sur votre téléphone, un serveur à vous. Chaque destination est une simple requête HTTP que vous écrivez. Ajouter une destination, sous les règles de la page Alarmes, en ajoute une.

Champ Ce qu'il fait
L'interrupteur L'active ou la désactive. Notifier la saute tant qu'elle est désactivée.
Le nom Ce que choisit Notifier. Chaque destination a besoin d'un nom à elle, et Asteroboard est déjà pris.
La méthode GET, POST, PUT, PATCH ou DELETE.
L'URL L'URL complète, qui commence par https:// ou http://.
En-têtes Des noms et des valeurs, comme un en-tête Authorization avec votre jeton. Ajouter un en-tête en ajoute un.
Corps Ce qui est envoyé, s'il y a quelque chose.

L'URL, les valeurs des en-têtes et le corps lisent les variables de l'alarme, comme une ligne de console : {bot}, {character}, {server}, {rule}, {event}, {time}, et chaque champ de l'événement, {sender}, {text}, {who}... Chaque valeur est échappée selon l'endroit où elle tombe, pour qu'un guillemet dans un message privé ne casse jamais votre requête :

  • Dans l'URL : encodée pour l'URL. Vendeur A devient Vendeur%20A.
  • Dans un corps JSON : échappée pour le JSON, à écrire entre guillemets : "text": "{text}". {json}, un message du jeu en JSON, va tel quel : "message": {json}, et en null pour un événement qui n'est pas un message du jeu.
  • Dans un corps de formulaire, avec l'en-tête Content-Type: application/x-www-form-urlencoded : encodée pour l'URL.
  • Dans un en-tête : sur une seule ligne.

Le corps part avec votre en-tête Content-Type quand vous en donnez un. Sans lui, un corps qui est un objet ou un tableau JSON, ses variables mises à part, part en application/json, et tout le reste en text/plain.

Tester

Tester envoie la destination une fois, telle qu'elle est sur la page, enregistrée ou non, avec un événement d'exemple : le bot Asterobot, l'événement test, le texte « This is a test from Asterobot ». Il montre ce que le service a répondu : Le service l'a acceptée avec son statut, ou Le service ne l'a pas acceptée avec la raison, comme the service answered 401 Unauthorized et le début de sa réponse, ou no answer within 10 s.

L'envoi

Les requêtes de chaque destination partent une par une, dans l'ordre, et un service a 10 secondes pour répondre. Quand il ne répond pas, dit qu'il reçoit trop de requêtes (429) ou a un problème de son côté (5xx), la requête repart après 2, 10 et 30 secondes. Toute autre réponse est définitive, puisque c'est la requête elle-même qui ne va pas. Une requête qui échoue pour de bon écrit pourquoi dans la console du bot : Alarm Staff: My phone didn't take the request: the service answered 401 Unauthorized.

Au plus 100 requêtes attendent pour une même destination. Au-delà, Notifier échoue pour cette destination, et le dit dans les Dernières alarmes. Une requête qui attend encore son tour après 10 minutes, pendant que le service est en panne, est abandonnée sans partir, pour que les alarmes que vous recevez à son retour soient récentes ; la console du bot le dit.

Une URL ou un jeton reste dans alarms.json, sur votre ordinateur. Asterobot ne les écrit jamais dans une ligne de console.

Exemples

Chaque service documente la requête qu'il accepte : son URL, et les noms qu'il donne aux champs de son corps. La plupart prennent l'une de ces trois formes.

Un webhook JSON, l'URL que l'application vous a donnée, son corps un objet JSON :

Champ Valeur
La méthode POST
L'URL https://chat.example.com/hooks/1234/abcd
Corps { "text": "{bot} : {event} {who}{sender} {text}" }

Un service de notifications qui prend le message en texte brut, son titre dans un en-tête :

Champ Valeur
La méthode POST
L'URL https://push.example.com/mon-sujet
En-têtes Title : {bot} : {event}
Corps {who}{sender} {text}

Un service qui prend tout dans son URL, et un jeton dans un en-tête :

Champ Valeur
La méthode GET
L'URL https://api.example.com/send?to=me&message={bot}%3A%20{text}
En-têtes Authorization : Bearer votre-jeton

Dernières alarmes

Sous les règles et les destinations, Dernières alarmes liste les 100 dernières alarmes déclenchées, les plus récentes en premier, jusqu'au redémarrage d'Asterobot : quand, l'événement et son bot, son personnage et son serveur, ses champs, la règle, et chaque réaction, Fait ou avec la raison pour laquelle elle n'a pas pu l'être, au survol. Une règle avec Attendre apparaît une fois toutes ses réactions faites. Une réaction Notifier est Fait dès que ses requêtes sont parties : celle qui échoue ensuite écrit pourquoi dans la console du bot.

Le fichier des alarmes

Les règles sont le fichier alarms.json du dossier des données d'Asterobot (Fichiers et dossiers). Ce que vous enregistrez sur la page Alarmes s'applique tout de suite ; un changement que vous faites à la main dans le fichier s'applique au prochain démarrage d'Asterobot.

{
  "version": 1,
  "destinations": [
    {
      "name": "Mon téléphone",
      "method": "POST",
      "url": "https://push.example.com/mon-sujet",
      "headers": { "Title": "{bot} : {event}" },
      "body": "{who}{sender} {text}"
    }
  ],
  "rules": [
    { "name": "Staff", "events": ["staff"], "do": [ { "pauseChat": 1800 }, { "notify": [] } ] },
    { "name": "Messages", "events": ["whisper", "mention"], "do": [ { "notify": ["Asteroboard"] } ] },
    {
      "name": "Mutisme",
      "events": ["staff"],
      "match": { "reason": "mute" },
      "do": [ { "stopScript": {} }, { "wait": 60 }, { "disconnect": { "reconnectAfter": 3600 } } ]
    },
    {
      "name": "Niveau 200",
      "events": ["game:CharacterLevelUpEvent"],
      "match": { "new_level": { "above": 199 } },
      "do": [ { "notify": ["Asteroboard"] }, { "log": "{character} a atteint le niveau {new_level}" } ]
    },
    {
      "name": "Répondre aux MP",
      "events": ["whisper"],
      "bots": ["Farmer-1", "Farmer-2"],
      "every": 600,
      "do": [ { "whisper": { "text": "{Désolé|Salut} {sender}, je suis occupé pour l'instant" } } ]
    }
  ]
}
Champ Valeurs
version 1
destinations[].name texte, propre à chaque destination, pas Asteroboard
destinations[].enabled false la désactive ; active quand absent
destinations[].method GET, POST, PUT, PATCH, DELETE
destinations[].url l'URL complète, https:// ou http://, un modèle
destinations[].headers des noms et des valeurs, les valeurs des modèles
destinations[].body un modèle ; rien n'est envoyé quand absent
rules[].name texte, propre à chaque règle
rules[].enabled false la désactive ; active quand absent
rules[].events staff, whisper, mention, spam, refused, soldOut, stopped, trigger, script, trigger:<nom>, script:<nom>, game:<Message>
rules[].bots des noms de bots ; tous les bots quand absent
rules[].match des noms de champs et ce que chacun doit valoir : une valeur ("mute"), une liste de valeurs (["PRIVATE", "GUILD"]), { "contains": "bot" }, { "above": 199 }, { "below": 10 }, ou les deux pour un intervalle
rules[].every secondes ; la règle se déclenche au plus une fois pendant ce temps pour chaque bot
rules[].do des réactions, chacune un objet à une seule clé : { "notify": ["Asteroboard", "Mon téléphone"] } (une liste vide pour toutes les destinations), { "pauseChat": 1800 } (secondes), { "say": { "channel": "GLOBAL", "text": "..." } }, { "whisper": { "to": "Nom", "text": "..." } }, { "play": "@me:hide" } ("" pour le script du bot), { "stopScript": {} }, { "wait": 60 } (secondes), { "send": { "type": "EmotePlayRequest", "payload": { "emote_id": 1 } } }, { "log": "..." }, { "flag": { "name": "quiet", "for": 600 } } (secondes, 0 pour la session de jeu), { "disconnect": { "reconnectAfter": 600 } } (secondes, 0 pour rester dehors)

Un fichier inutilisable, comme un fichier modifié à la main avec une erreur, affiche Le fichier est inutilisable : les règles par défaut s'appliquent avec le champ en cause, et les règles par défaut s'appliquent jusqu'à ce que vous le corrigiez.

Read this page in English

Compte

Navigation

Recherche

Recherche

Configurer les notifications push du navigateur

Chrome (Android)
  1. Appuyez sur l'icône de cadenas à côté de la barre d'adresse.
  2. Tap Autorisations → Notifications.
  3. Ajustez vos préférences.
Chrome (Desktop)
  1. Cliquez sur l'icône représentant un cadenas dans la barre d'adresse..
  2. Select Paramètres du site.
  3. Find Notifications et ajustez vos préférences.