Asterobot, le nouveau bot Dofus gratuit est ouvert!
Asterobot, le nouveau bot dofus gratuit est ouvert
Aujourd'hui, j'ouvre Asterobot à tout le monde, et je suis fier de pouvoir enfin écrire cette phrase.
J'ai passé des années sur ce projet. À le construire, bien sûr, mais surtout à réfléchir longuement à sa structure : comment un bot doit se connecter au jeu, comment un script doit lui parler, comment une seule interface peut montrer tout ce qu'un bot voit. Beaucoup de ces idées ont été réécrites plus d'une fois avant de me sembler justes. Chaque partie qui parle au jeu a été écrite de zéro et vérifiée par rapport à ce que fait vraiment le client Dofus. Aujourd'hui, il est entre vos mains, et ça compte beaucoup pour moi.
Asterobot est un framework de bots pour Dofus 3. Il tourne sur votre propre ordinateur, connecte des bots au jeu de deux façons différentes, exécute les paquets JavaScript que vous leur donnez, et décortique le jeu pour que vous puissiez voir comment il fonctionne. Vous pilotez tout depuis Asteroboard, dans votre navigateur. À partir d'aujourd'hui, toute personne qui a un compte asterobot.net peut le télécharger.
J'espère que vous serez nombreux à l'apprécier : les joueurs qui veulent automatiser une partie de leur jeu, les développeurs qui veulent écrire leurs propres scripts, et tous les curieux qui veulent savoir ce que Dofus fait vraiment derrière l'écran. Cet article est long, parce que je préfère vous montrer comment chaque partie fonctionne plutôt que de vous donner une liste de fonctionnalités. Si vous voulez essayer tout de suite, la dernière section met en route votre premier bot en quatre étapes.
Trois parties, un seul système, un bot dofus en mode Client/Serveur!
Utiliser Asterobot, c'est utiliser trois choses ensemble : un programme qui fait le travail, une interface pour le piloter, et un site autour des deux. Savoir qui fait quoi rend tout le reste plus facile à suivre.
Asterobot est le programme. C'est un seul fichier pour votre système, sans installateur : vous le téléchargez, vous le décompressez et vous le lancez. Tout se passe à l'intérieur. Vos bots et leurs connexions à Dofus, les comptes Ankama que vous enregistrez, les versions de Dofus qu'il télécharge, les paquets de votre bibliothèque et les scripts qu'ils exécutent vivent tous dans ce seul programme. Ses réglages tiennent dans un seul config.toml, et le reste de ses données se trouve dans les dossiers de votre profil utilisateur. Asterobot n'a pas de fenêtre à lui : il tourne dans un terminal, et tant que ce terminal est ouvert, Asterobot tourne.
Asteroboard est l'interface, sur asteroboard.asterobot.net. La page vient d'internet, mais tout ce qu'elle affiche vient de votre propre Asterobot. Votre navigateur se connecte directement à l'adresse d'Asterobot, 127.0.0.1:8080 par défaut, et Asteroboard affiche ce qu'Asterobot lui transmet et lui envoie ce sur quoi vous cliquez. Ouvrez cette adresse dans un navigateur et Asterobot vous renvoie vers Asteroboard avec l'adresse jointe : il n'y a rien à configurer. Dès lors, chaque changement arrive en direct dans la page. Asteroboard a aussi une page pour Asterobot lui-même, Serveur, avec son état, son journal en direct avec des niveaux réglables, et chaque réglage avec sa description, modifiable depuis le navigateur.
Comme les bots vivent dans Asterobot et pas dans la page, fermer Asteroboard n'arrête rien. Fermez l'onglet, revenez plus tard ou depuis un autre appareil, et tout est là où vous l'avez laissé : les bots toujours connectés, les scripts toujours en cours, les téléchargements toujours en route. La console d'un bot reprend même avec les 200 dernières lignes qu'Asterobot a gardées pour lui. Vous pouvez installer Asteroboard comme une application depuis votre navigateur, et il s'ouvre alors dans sa propre fenêtre. Une fois chargé, il continue de fonctionner sans connexion internet tant qu'il atteint votre Asterobot, et il vérifie toutes les 30 minutes s'il existe une nouvelle version de lui-même. Il est disponible en anglais, en français et en espagnol, et suit la langue de votre navigateur tant que vous n'en choisissez pas une.
asterobot.net est le site : votre compte, les téléchargements, le marché où les joueurs partagent des paquets, le forum, la référence du protocole Dofus et la documentation. Asterobot se connecte avec votre compte asterobot.net, mais il ne demande jamais votre mot de passe. Il reçoit un code de huit caractères que vous confirmez sur le site, depuis n'importe quel appareil, ou en scannant un QR code affiché dans son terminal.
Une même idée traverse les trois : rien n'est caché. De la connexion jusqu'au plus petit message échangé avec le jeu, vous voyez ce que fait votre bot, et un script peut agir sur tout cela.
![]()
Connexion
Deux façons de connecter un bot
Un bot peut rejoindre Dofus de deux façons. En mode MITM, il vous accompagne sur la partie que vous jouez. En mode Full socket, il se connecte et parle tout seul aux serveurs du jeu, sans aucun client de jeu. Un bot n'appartient pas à un mode : le mode, c'est ce qu'il fait quand vous le mettez en ligne. Un bot qui a un compte Ankama peut faire les deux, l'un après l'autre, puisqu'un compte n'a qu'une session de jeu à la fois. Un bot sans compte ne peut qu'attendre votre jeu.
Mode MITM
MITM vient de l'anglais man-in-the-middle, « homme du milieu ». Vous lancez Dofus depuis le launcher Ankama et vous jouez comme n'importe quel autre jour, et Asterobot se place entre votre jeu et les serveurs d'Ankama, en faisant passer tout ce qui s'échange dans les deux sens. Le bot qui reçoit votre session voit tout, et un script qui tourne dessus peut lire, envoyer, modifier ou bloquer les messages au passage. C'est la façon la plus simple de commencer : aucun compte Ankama à enregistrer, et aucun script nécessaire pour entrer en jeu, puisque votre propre Dofus s'en est déjà chargé.
Voici comment votre jeu finit par passer par Asterobot. Quand vous cliquez sur Commencer l'attente sur un bot, Asterobot modifie une seule ligne de votre dossier Dofus : la ligne ConfigUrl de Dofus_Data/StreamingAssets/version, qui indique à Dofus où récupérer ses paramètres de connexion. Le reste du fichier n'est pas touché. Quand Dofus démarre et demande ces paramètres, Asterobot répond avec les vrais paramètres d'Ankama, modifiés à un seul endroit : le serveur de connexion, c'est désormais Asterobot. Votre jeu se connecte à travers lui, et Asterobot transmet tout à Ankama. Quand Ankama envoie ensuite votre jeu vers un serveur de jeu, Asterobot remplace cette adresse par celle de son propre port de session. Ce port n'accepte qu'une session dont le ticket est passé par la connexion d'Asterobot, et chaque ticket ne sert qu'une fois.
Vous vous connectez vous-même, dans le jeu : Asterobot ne voit donc jamais votre identifiant ni votre mot de passe Ankama, et les comptes protégés par Ankama Shield ou par la double authentification fonctionnent comme d'habitude. La seule chose dont il a besoin, c'est de sa propre copie de la version exacte de Dofus à laquelle vous jouez : il compare les numéros de version avant qu'un bot commence à attendre, et refuse quand ils diffèrent.
Tous les clients Dofus passent par les deux mêmes ports, l'un pour la connexion et l'autre pour la session de jeu (5555 et 5556 par défaut), quel que soit le nombre de bots. Asterobot distingue les sessions par ce qu'elles envoient, et associe chacune à un bot en attente selon le compte Ankama avec lequel elle s'est connectée. Un bot sans compte se rattache au premier compte qui se présente, et le garde. Une partie qu'aucun bot n'attend passe directement et se joue normalement : vos autres comptes ne sont pas concernés pendant que l'un d'eux est relayé. Quand vous quittez Dofus, le bot se remet à attendre votre prochaine session.
Asterobot remet la ligne d'origine quand plus aucun bot n'attend, quand il s'arrête, et même à son démarrage suivant s'il a été arrêté brutalement. Les deux ports ne s'ouvrent que pendant qu'un bot attend, et n'écoutent que sur votre propre ordinateur, sauf si vous en décidez autrement. Avec quelques réglages, vous pouvez jouer sur un PC pendant qu'Asterobot relaie depuis un autre, et suivre le tout depuis un troisième. Un tunnel SSH peut tout transporter sans ouvrir un seul port.
Mode Full socket
En mode Full socket, un bot fait tout seul ce que fait le client Dofus. Personne au clavier, aucune fenêtre Dofus ouverte : un seul ordinateur peut faire tourner autant de ces bots que vous avez de comptes Ankama.
Quand vous cliquez sur Connecter, la connexion passe par trois étapes, et la console du bot raconte chacune d'elles. D'abord la connexion Ankama, qui donne au bot un ticket à usage unique pour le jeu. La connexion automatique pilote un vrai Chrome, Chromium ou Edge, sans fenêtre par défaut et avec son propre profil de navigateur pour chaque compte. Vous pouvez aussi vous connecter à la main depuis Asteroboard, ce qui ne demande aucun mot de passe enregistré. Quand une connexion cesse de fonctionner, Asterobot la renouvelle. Vient ensuite le serveur de connexion : le bot s'identifie avec le ticket et son identifiant de machine, reçoit la liste des serveurs du compte et en choisit un. Enfin, il ouvre sa propre connexion à ce serveur de jeu. Chaque échange a une limite de 30 secondes, pour que rien ne reste bloqué en silence, et quand quelque chose échoue, la raison complète s'affiche en haut de la page du bot.
Chaque bot reçoit son propre identifiant de machine de 64 caractères quand vous l'ajoutez, la valeur que le client Dofus envoie pour l'ordinateur sur lequel il tourne, et le garde d'une connexion à l'autre. Le serveur qu'il choisit dépend de vous : celui de votre dernier personnage joué, un serveur que vous imposez, ou une carte Choisissez un serveur à chaque fois, avec l'état de chaque serveur, son type, son badge mono-compte et le nombre de personnages que vous y avez. Quand vous connectez dix bots d'un coup, leurs connexions Ankama se mettent en file et passent une par une, au lieu de se marcher dessus.
Le rôle d'Asterobot s'arrête là, sur une connexion ouverte avec le serveur de jeu. Identifier le bot et choisir un personnage reviennent à un script, appelé script de connexion. C'est voulu : à partir de ce moment, tout ce que le jeu attend relève de la logique de jeu, et la logique de jeu a sa place dans les paquets, où vous pouvez la lire, la modifier et la remplacer. En écrire un tient en quelques lignes, montrées dans la documentation développeurs. Des scripts de connexion prêts à l'emploi arrivent : le premier officiel, @asterobot:base, identifiera le bot, choisira un personnage, entrera dans le monde et maintiendra la connexion. En attendant qu'il soit sur le marché, le mode MITM n'a besoin d'aucun script de connexion.
![]()
Suivre un bot pendant qu'il joue
Chaque bot a sa propre page dans Asteroboard, remplie en direct pendant qu'il joue. Sa connexion et son paquet sont dans l'en-tête, avec les boutons pour le connecter, le mettre en attente, le lancer et l'arrêter. Une ligne au-dessus des onglets garde en vue le niveau, l'expérience, les points de vie, l'énergie, les pods et les kamas, quel que soit l'onglet ouvert.
C'est sur l'onglet Console que vous passerez le plus de temps. C'est un seul fil pour ce qu'Asterobot fait avec le bot, ce qu'écrit son script et le chat du jeu. Vous pouvez le filtrer par source, y chercher et le copier, et la zone de saisie en bas parle dans le chat du jeu en tant que votre personnage. Quand une connexion ou un script échoue, l'erreur complète s'affiche en haut de la page, sélectionnable, avec un bouton Copier, prête à coller dans un rapport de bug.
Tout cela est construit à partir des propres messages du jeu. Asterobot ne transmet à Asteroboard que ceux que vous demandez, et quatre interrupteurs décident de ce qu'un bot envoie : personnage, chat, inventaire et carte. Quand votre navigateur ne suit pas, Asterobot saute des messages plutôt que de ralentir le bot. Le bot et son script ne manquent jamais rien : seule la page en manque.

Personnage Nouveau
L'onglet Personnage est votre fiche de personnage, exactement comme le jeu l'envoie. Progression affiche le niveau et le niveau oméga, l'expérience jusqu'au niveau suivant, l'énergie, et les points de vie détaillés en base, vitalité, bonus, érosion et ce qui a été perdu. Chaque caractéristique est détaillée elle aussi, de sa valeur de base jusqu'aux points additionnels, à l'équipement, aux dons d'alignement, au contexte et aux effets temporaires, le tout regroupé en primaires, secondaires et dommages. Les résistances en pourcentage et les résistances fixes de chaque élément sont côte à côte. La carte Équipement passe en revue chaque emplacement, de l'arme et du chapeau jusqu'au familier, au compagnon et aux Dofus, avec un lien direct vers l'inventaire.
![]()
Inventaire
L'onglet Inventaire affiche vos objets, vos kamas et vos pods, mis à jour pendant que vous jouez. Chaque objet affiche les effets que le jeu a tirés pour cette pile précise, bonus en vert et malus en rouge, avec sa description, son niveau et son poids. La barre de pods passe à l'orange à 90 % du maximum et au rouge dès que le personnage est surchargé : vous le voyez venir. Vous pouvez parcourir les catégories, chacune avec son nombre d'objets, chercher dans les noms, les types, les effets et les identifiants, trier, et choisir vos colonnes. Un clic droit détruit un objet, ou une partie d'une pile : Asteroboard envoie la requête du jeu lui-même, au nom de votre personnage. Chaque objet s'ouvre aussi sur sa fiche dans les données du jeu.
![]()
Carte en direct Nouveau
L'onglet Carte montre où se trouve votre personnage. Sa position est épinglée sur la carte du monde, et sa carte est dessinée cellule par cellule à côté, avec le personnage sur sa cellule et tous ceux qui l'entourent : joueurs, monstres et PNJ, tenus à jour à mesure qu'ils arrivent, se déplacent et repartent. Chaque ressource et chaque objet de la carte est listé, disponible ou non, avec son bonus de récolte depuis sa dernière repousse, et qui l'a utilisé en dernier, et quand. La vue suit le bot de carte en carte, ou reste là où vous naviguez.
Double-cliquez sur une cellule, ou faites un clic droit dessus et choisissez Marcher ici, et le personnage y va, par exactement le chemin que prendrait le client Dofus en contournant tous ceux qui sont sur la carte. Sur un bot MITM, vous voyez votre propre personnage y marcher dans le jeu.
![]()
![]()
Sniffer réseau
Dofus et ses serveurs se parlent en échangeant des messages : une ligne de chat, un personnage qui se déplace, le contenu d'un inventaire. Ce que le client envoie est une requête, ce que le serveur envoie est un événement, et les quelques requêtes qui attendent une réponse directe en reçoivent une, associée à elles par un numéro appelé uid. Un bot parle au jeu de la même façon, et l'outil Réseau, dans l'onglet Outils d'un bot, vous montre chacun de ces messages.
Dofus 3 rend cela plus difficile qu'il n'y paraît. Sur le réseau, ses messages ne portent pas de noms comme ChatChannelMessageEvent. Ils portent des noms courts et brouillés, qui changent à chaque version. Asterobot les retraduit, pour que vous lisiez les vrais noms, et vos scripts les utilisent aussi. Les messages qu'il ne sait pas encore nommer s'affichent quand même, sous leur nom brouillé : quand le schéma du jeu les décrit, leurs champs sont tout de même décodés, et sinon, vous obtenez les octets bruts.
Un bot échange beaucoup de messages, donc le panneau Trafic commence vide. Vous cochez les messages que vous voulez suivre, par leur nom, et le choix est enregistré avec le bot. Il ne change que ce qu'affiche Asteroboard : un script reçoit toujours tout. Chaque ligne a la couleur de son type, vert pour les événements, rouge pour les requêtes et bleu pour les réponses. Elle s'ouvre sur ses champs en JSON, y compris ceux à leur valeur par défaut, avec les nombres de 64 bits gardés exacts sous forme de texte, un horodatage à la milliseconde, le numéro de séquence du message et son uid.
Pour s'y retrouver, la zone de recherche comprend un petit langage : de simples mots, ou name:, kind:, direction:, uid:, payload: et d'autres, avec - pour exclure. direction:inbound -kind:event garde ce que le serveur a envoyé et qui n'est pas un événement, et un nombre seul retrouve un identifiant de personnage dans n'importe quel champ.
Vous pouvez aussi envoyer des messages. Envoyer un message de jeu construit un formulaire à partir des types des champs du message, affiche le JSON exact, et le vérifie par rapport à la définition du jeu avant que quoi que ce soit ne parte. Il part vers le serveur au nom de votre personnage. Sur un bot MITM, Vers le client inverse le sens : le message arrive à votre propre Dofus comme si le serveur l'avait envoyé, ce qui est le moyen le plus rapide de voir comment le client réagit à quelque chose. La référence du protocole Dofus sur asterobot.net explique chaque message et ses champs.
![]()
![]()
La propre copie de Dofus d'Asterobot
Asterobot ne prend rien au Dofus auquel vous jouez. Il télécharge sa propre copie du jeu depuis les serveurs de téléchargement d'Ankama, une version à la fois, et travaille à partir de celle-ci. Le Dofus que vous avez installé avec le launcher reste le vôtre : la seule fois où Asterobot y touche, c'est pour cette fameuse ligne du mode MITM.
Par défaut, cette copie n'est pas le jeu entier, seulement ce dont un bot a besoin : les textes du jeu, les tables de données, les données des cartes, le graphe de déplacement du monde et quelques jeux d'images. Une expression régulière décide des fichiers téléchargés, et une expression vide prend tout. C'est toujours la build Windows, même sous macOS et Linux, parce que deux fichiers qu'un bot lit se trouvent dans un dossier qui porte le nom de la cible de build Windows d'Unity. Rien n'exécute le jeu : elle ne coûte donc que de l'espace disque.
Ankama livre le jeu en morceaux, et Asterobot stocke chaque morceau une seule fois, nommé d'après son contenu, quelle que soit la version d'où il vient. Un morceau qu'il a déjà n'est jamais retéléchargé : après un patch, seul ce qui a changé est téléchargé. Réessayer reprend un téléchargement échoué là où il s'est arrêté, et Vérifier les fichiers compare chaque fichier à la liste d'Ankama et ne retélécharge que ceux qui ne correspondent pas. Vous pouvez garder plusieurs versions côte à côte, chacune avec ses bots, et tout faire aussi en ligne de commande, avec les commandes gamemanager.
![]()
![]()
Le jeu, décortiqué
Télécharger n'est que la moitié du travail. Asterobot extrait ensuite les fichiers du jeu : il lit directement les fichiers Unity de Dofus et construit une base SQLite pour chaque version. Pour Dofus 3.6.11.15, cela fait 17 419 cartes, 234 tables et environ 2,9 millions de lignes. Tout ce que montre la page Jeu dans Asteroboard lit cette base, et rien de tout cela n'a besoin d'un bot.
Les fichiers du jeu vont d'un numéro vers un texte, jamais dans l'autre sens : un monstre connaît le numéro de son nom, mais rien ne vous dit quel monstre s'appelle Bouftou. Asterobot construit donc l'autre sens, 497 135 noms en français, anglais, allemand, espagnol et portugais, indexés pour la recherche plein texte. Ouvrez un enregistrement dans Données de jeu et chaque colonne qui pointe vers une autre table devient un lien, qui affiche le nom de ce qu'elle désigne. Asterobot vérifie chaque lien pendant l'extraction, pour qu'un lien ne mène jamais nulle part. À côté des tables du jeu lui-même, il dérive celles que le jeu n'a pas, comme les cartes où se trouve chaque élément interactif, chaque ligne renvoyant vers son parent.
![]()
Console SQL
L'onglet SQL vous permet de demander n'importe quoi à cette base. Elle est en lecture seule par conception : toute instruction qui écrit échoue, attacher une autre base est refusé, et chaque requête dispose de 10 secondes et affiche jusqu'à 500 lignes. La complétion connaît les tables, les colonnes, les mots-clés SQL et, entre apostrophes, les noms des enregistrements : tapez 'Bouf et elle propose Bouftou. Le menu Exemples contient des requêtes prêtes à l'emploi sur les monstres, les objets, la récolte, l'artisanat, la navigation, les cartes, les quêtes et les textes, chacune avec des notes sur les tables qui contiennent quoi et les pièges à éviter. Une requête qui marche ici marche aussi dans un script, paramètres compris.
![]()
Carte du monde
La carte du monde montre où tout se trouve dans le Monde des Douze, et au-delà. Cherchez des coordonnées, un identifiant de carte, ou le nom d'une région, d'un donjon, d'un point d'intérêt, d'un monstre ou d'un objet, dans la langue de votre choix. Choisissez un monstre et les régions où il vit s'allument. Choisissez un objet et vous voyez où il se récolte et où vivent les monstres qui le lâchent. Les contours des régions, les points d'intérêt par catégorie, les zaaps, les donjons, une grille de coordonnées et une carte des niveaux sont des calques que vous activez ou désactivez. Cliquez sur une région et son panneau donne son niveau, son zaap, ses monstres avec leur rayon d'agression, ce qu'on peut y récolter et avec quel métier, et ce que lâchent ses monstres.
![]()
Visionneuse de carte
La visionneuse de carte dessine n'importe quelle carte cellule par cellule, comme un bot la voit, dans six vues : sol praticable, placement de combat, ligne de vue, zones, hauteur et sorties, avec dix calques à activer ou désactiver. Ses sorties viennent du graphe que le jeu utilise lui-même pour planifier ses trajets, que vous marchiez, preniez une porte ou un escalier, ou utilisiez un parchemin, avec leurs conditions écrites comme le jeu les écrit. Les portes, les caves et les téléporteurs sont marqués sur leurs cellules, tout comme les objectifs de quête présents sur la carte, étape par étape.
Les flèches du clavier vous emmènent à la carte suivante, et une flèche en contour vous signale qu'une carte voisine existe mais que rien n'y mène. Pointez une cellule pour lire chacun de ses indicateurs, tels qu'extraits du jeu, et les éléments interactifs qui s'y trouvent. Quand vous voulez garder une carte, enregistrez-la en PNG, exactement telle qu'elle est dessinée, avec la vue et les calques que vous avez choisis.
Textes et musique
L'onglet Textes retrouve n'importe quel texte du jeu par son numéro ou sa clé, dans les cinq langues, avec des statistiques sur le fichier de textes de chaque langue. Et il y a la bande originale : l'onglet Musique télécharge les quatre banques audio qui contiennent la musique de Dofus, environ 900 Mo, sans les sons de combat et d'interface, et la joue avec des albums, une file d'attente et la lecture en boucle. Un petit lecteur reste dans la barre du haut pendant que vous parcourez le reste d'Asteroboard.
Les paquets et le marché
Un bot seul se connecte à Dofus et ne fait rien de plus. Pas de combat, pas de récolte, aucune réponse aux autres joueurs. Ce qu'il fait une fois en jeu vient d'un paquet : un petit programme JavaScript que vous installez dans votre bibliothèque et que vous donnez au bot. Pas besoin d'écrire de code pour en utiliser un.
Le marché, la catégorie Librairie d'asterobot.net, rassemble les paquets que les joueurs partagent, et tout le monde peut en publier un. Pour installer un paquet, collez son lien dans Gestionnaire de bibliothèque > Télécharger un paquet. Une carte d'aperçu affiche son auteur ainsi que le nom et la version exacts sous lesquels il s'installera, et Installer l'ajoute avec tous les paquets dont il dépend, puisqu'un paquet peut s'appuyer sur d'autres, qui peuvent eux-mêmes s'appuyer sur d'autres.
Chaque version s'installe à côté des autres, et chaque bot joue une version précise. C'est voulu : une mise à jour ne change jamais ce que joue un bot tant que vous ne l'y faites pas passer. Asterobot prend aussi l'empreinte d'un paquet du marché quand il l'installe, et vérifie cette empreinte à chaque chargement du paquet. Si un seul fichier a changé, le paquet est refusé. Un badge vous indique qui a publié chaque paquet, Officiel ou Communautaire, et sa page renvoie au fichier dont il vient. N'importe quel paquet peut être exporté en .zip, et le .zip d'un ami importé de la même façon.
Avant de lancer un paquet, sachez ce à quoi il a accès. Il joue avec votre personnage et peut envoyer tout ce que le client Dofus peut envoyer : se déplacer, combattre, parler, échanger, vendre, détruire des objets. Il lit tout ce que le jeu envoie au bot, et sur un bot MITM, il peut modifier ou bloquer les messages dans les deux sens. Il ne peut pas lire les fichiers de votre ordinateur, accéder à internet, voir votre mot de passe Ankama ni toucher à vos autres bots. Regardez ce qu'il fait avant de le lancer, et gardez sa console ouverte la première fois.
Réglages et actions des paquets
Un paquet peut afficher ses propres réglages sur la page du bot, sans que son auteur écrive la moindre interface. Il les déclare dans un seul objet exporté, et Asteroboard dessine le formulaire : interrupteurs, texte, nombres entiers et décimaux avec leur minimum, leur maximum et leur unité, listes déroulantes, listes et dictionnaires. Quand vous cliquez sur Appliquer, Asterobot vérifie chaque valeur par rapport à la déclaration, puis transmet les nouvelles valeurs au script en cours sans le redémarrer. Chaque bot garde ses propres valeurs, d'un redémarrage à l'autre et d'une version du paquet à l'autre.
Les actions fonctionnent de la même façon, sous forme de boutons. Chacune exécute une partie du script, avec une boîte de dialogue pour ses arguments et une notification quand elle se termine ou échoue. Une action qui échoue n'arrête jamais le script.
![]()
Écrire vos propres scripts
Tout ce que fait un paquet passe par le SDK JavaScript. Un script joue à Dofus comme le fait le client Dofus : il envoie les messages que le client enverrait, et réagit à ce que le serveur renvoie. Il n'y a pas de fonction « combattre » ou « récolter » intégrée, et c'est tout l'intérêt. Ce sont des paquets, écrits à partir des propres messages du jeu, de quelques lignes qui répondent à une commande de chat jusqu'à des comportements complets construits à partir d'autres paquets.
Les scripts sont écrits en JavaScript moderne : modules ES, async/await, classes, et BigInt pour les identifiants 64 bits du jeu. Chaque bot exécute sa propre copie du script dans un moteur intégré avec sa propre boucle d'événements, juste à côté de sa connexion au jeu : deux bots qui jouent le même paquet ne partagent rien. Un script n'a ni fichiers ni réseau, et du code qui tourne plus de 250 ms sans rien attendre arrête le script, pour qu'un script ne puisse pas bloquer le reste d'Asterobot.
Les messages arrivent à un script de la même façon sur un bot Full socket et sur un bot MITM : vous écrivez votre logique une seule fois. Le script sait aussi pourquoi il a démarré : une nouvelle connexion de jeu, une session qu'il reprend, ou un rechargement après une modification de son code. Sur une nouvelle connexion Full socket, il identifie lui-même le bot. Sur un bot MITM, le client Dofus l'a déjà fait, et les mêmes lignes sautent cette étape. Celui-ci écrit dans sa console chaque ligne de chat que reçoit le bot, dans les deux modes :
import { session, botInfo } from "asterobot:bot";
import { on, send } from "asterobot:protocol";
export default async function behavior(launch) {
on("ChatChannelMessageEvent", (traffic) => {
// Un message qu'Asterobot n'a pas pu décoder n'a pas de payload, et une
// erreur levée dans un gestionnaire arrête tout le script.
if (!traffic.payload) return;
const { channel, senderName, content } = traffic.payload;
botInfo(`[${channel}] ${senderName}: ${content}`);
});
// Une nouvelle connexion de jeu commence par ce message. Les bots MITM ne se
// lancent jamais avec "initial" : le client Dofus a déjà identifié leur session.
if (launch.reason === "initial") {
await send("IdentificationRequest", {
ticketKey: session.gameToken,
languageCode: session.language,
});
}
}on() écoute, wait() attend le prochain message qui correspond, send() envoie, et request() envoie puis se résout avec la réponse qui porte le même uid. Les intercepteurs vont un cran plus loin. Un intercepteur est consulté sur chaque message avant qu'il ne poursuive sa route, et le laisse passer, le modifie ou le bloque, en moins de 50 ms. S'il échoue ou répond en retard, le message continue sans changement : un script ne peut jamais bloquer une session. Celui-ci, sur un bot MITM, transforme les lignes de chat que vous tapez en commençant par ! en commandes pour votre script, et elles n'atteignent jamais le serveur :
intercept("ChatChannelMessageRequest", (traffic) => {
const content = traffic.payload?.content;
if (typeof content !== "string" || !content.startsWith("!")) return undefined;
botInfo("Commande :", content);
return "drop";
});Un script lit les données du jeu avec record(), find(), search() et query(), les mêmes tables et les mêmes colonnes que sur la page Jeu. Il sait où se trouvent son personnage et les acteurs autour de lui. findPath() renvoie le chemin que renvoie le propre routeur du client Dofus, règle pour règle, y compris pour les cellules qu'il ne peut pas atteindre, avec la durée du trajet, et move() le parcourt et se résout quand le serveur confirme la fin du déplacement. Voici ce que vous apporte chaque module intégré :
Module | Ce qu'il apporte à votre script |
|---|---|
| Écouter les messages, en attendre un, envoyer, faire une requête et intercepter |
| Enregistrements, noms, textes et requêtes SQL sur les données du jeu |
| La session, la position du personnage et des acteurs autour de lui, la console du bot |
| Le chemin que prendrait le client Dofus jusqu'à une cellule, et sa durée |
| Marcher jusqu'à une cellule et attendre la fin du déplacement, dans les deux modes |
| Les réglages que l'on modifie sur la page du bot, en direct |
| Attendre, le journal d'Asterobot lui-même, et les informations de votre paquet |
L'éditeur de paquets
Vous écrivez vos paquets dans Asteroboard lui-même. L'éditeur charge ses types depuis votre Asterobot : chaque fonction asterobot: et un type par message du jeu qu'il connaît, si bien que les noms de messages et les champs des payloads se complètent pendant que vous tapez. Votre JavaScript est vérifié au fil de l'écriture, types JSDoc compris, et les erreurs sont comptées dans tous les fichiers du paquet, ouverts ou non. Un paquet peut avoir plusieurs fichiers, avec des imports entre eux, l'accès à la définition et le renommage dans tous les fichiers.
Lancer enregistre le paquet, arrête ce que jouait le bot, charge votre code et le démarre. Modifiez une ligne, cliquez, regardez la console. Un panneau Jeu garde la visionneuse de carte et le navigateur des données du jeu à côté du code, pour les identifiants dont votre script a besoin. Quand il est prêt, exportez-le et publiez-le sur le marché : tout membre d'asterobot.net peut le faire.
![]()
Où tourne Asterobot
Asterobot existe en six builds : Windows, macOS et Linux, chacun en x86-64 et en ARM64. Cela couvre aussi bien un portable Snapdragon qu'un Mac avec une puce Apple, un Raspberry Pi 4 ou 5, ou un serveur ARM. C'est du Go pur, sans la moindre ligne de C, compilé pour les six cibles depuis une seule machine, et la version Linux tourne sur n'importe quelle distribution, sans rien à installer à côté. Chaque version est livrée avec un checksums.txt qui contient le SHA-256 de chaque archive, pour que vous puissiez vérifier que le fichier que vous lancez est bien celui qui a été publié.
Pour les serveurs, il existe des images pour amd64 et arm64 sur Docker Hub, sous asterobot/asterobot. Elles sont construites à partir de zéro autour du même binaire, tournent sous un utilisateur sans privilèges, et gardent tout dans un seul volume /data, ou trois si vous voulez le cache du jeu sur un autre disque.
Contrôle à distance
Par défaut, chaque port n'écoute que sur votre propre ordinateur. Sous Linux et macOS, les fichiers qui contiennent vos connexions et vos mots de passe ne sont lisibles que par votre utilisateur, et Asterobot les restreint de nouveau s'il les trouve ouverts. À partir de là, vous ouvrez autant que nécessaire.
Pour atteindre un Asterobot sur une autre machine, un tunnel SSH transporte son port : c'est chiffré, rien de nouveau n'est ouvert sur internet, et le mode MITM continue de fonctionner à travers lui. Pour suivre vos bots depuis votre téléphone sur votre réseau domestique, activez TLS et l'authentification basique, et Asterobot crée son propre certificat si vous n'en fournissez pas. Le mode MITM a toutefois besoin que les deux restent désactivés : pendant que vous relayez une partie, c'est le tunnel qu'il vous faut. Asterobot n'a besoin d'aucun bureau : son journal est sur la page Serveur, et il peut afficher sa connexion sous forme de QR code dans le terminal.
Proxys SOCKS5
Chaque bot peut se connecter depuis sa propre adresse. Enregistrez vos proxys une fois dans le Gestionnaire de proxys et attribuez-en un à chaque bot. Plusieurs bots peuvent partager le même, et un changement s'applique à la connexion suivante sans toucher à une session en cours. En mode Full socket, la connexion au serveur de connexion et celle au serveur de jeu passent toutes les deux par le proxy, et en mode MITM, c'est la connexion de jeu. La connexion HTTPS à Ankama part toujours de votre propre adresse.
Tester envoie une vraie requête HTTPS par un proxy et affiche l'adresse que l'autre côté a vue, et Tout tester vérifie tous les proxys d'un coup. Un bot dont le proxy manque refuse de se connecter plutôt que de se connecter depuis votre propre adresse, et un proxy encore utilisé ne peut pas être supprimé.
Assistants IA
MCP pour les assistants IA
Asterobot parle MCP, le protocole qu'utilisent les assistants IA pour piloter des programmes, sur /mcp de son propre port. Connectez Claude Code, Codex, Cursor ou n'importe quel client MCP, et vous pouvez lui demander d'ajouter un bot sur votre deuxième compte et de le connecter, de trouver les tables qui contiennent les monstres et leurs butins, ou d'écrire un script qui salue votre guilde. Avec Claude Code, il suffit d'une commande :
claude mcp add --transport http asterobot http://127.0.0.1:8080/mcpL'assistant dispose d'une centaine d'outils, un pour chaque chose que sait faire Asteroboard, générés au démarrage à partir de la même description d'API que celle sur laquelle Asteroboard est construit. Chaque appel passe par les mêmes vérifications : un assistant ne peut jamais faire ce qu'Asteroboard ne pourrait pas faire. Il suit ce qui se passe avec watch-events, qui attend jusqu'à 30 secondes l'événement suivant et lui dit combien il en a manqué, lit le journal d'Asterobot avec read-logs, et demande la forme exacte de n'importe quelle action avec describe-operation. Une réponse de plus de 100 000 octets est raccourcie par la fin de sa plus grande liste, et l'assistant apprend comment affiner sa demande.
Quelques réglages par défaut sont là pour vous protéger. Arrêter Asterobot et réinitialiser tous les réglages restent cachés tant que vous ne les autorisez pas, les secrets reviennent sous la forme [redacted], et vous pouvez limiter un assistant aux parties d'Asterobot que vous choisissez. Gardez en tête qu'un assistant agit en votre nom : tout ce que vous pouvez faire depuis Asteroboard, il peut le faire, y compris sur vos comptes Ankama.
Asterobot est le premier bot Dofus intégrant nativement le MCP. Il vous permet de contrôler entièrement votre bot Dofus, Asterobot ou Asteroboard, directement depuis une IA.
Automatisez vos actions, pilotez votre bot et interagissez avec votre environnement de jeu simplement en utilisant le langage naturel. Et même générer des scripts!
![]()
Quand Dofus se met à jour
Ankama patche Dofus régulièrement, et les messages qu'échange le jeu changent à chaque patch. Asterobot est construit pour suivre. La version de Dofus avec laquelle il fonctionne n'est pas figée dans le programme : quand Ankama patche le jeu, la prise en charge de la nouvelle build peut arriver jusqu'à votre Asterobot depuis asterobot.net, sans nouveau téléchargement. Et vos scripts ne voient pas les noms brouillés changer. Ils continuent d'écrire ChatChannelMessageEvent, quel que soit le nom brouillé du jour.
Chaque version d'Asterobot est testée avec une version de Dofus, et chaque version que vous téléchargez est comparée à celle-ci : Compatible ou Version différente, dans le Gestionnaire de jeux, sur la page Jeu et sur chaque bot. Après un patch, téléchargez la nouvelle version à côté de l'ancienne, passez vos bots dessus un par un, et supprimez l'ancienne version quand plus rien ne l'utilise. En mode MITM, gardez vos bots sur la version à laquelle vous jouez, car un bot refuse d'attendre une partie d'une autre version.
Documentation
Tout ce que décrit cet article est documenté en détail. Le guide va du téléchargement d'Asterobot jusqu'à son installation sur un serveur, avec chaque réglage et chaque erreur que vous pouvez rencontrer, en français et en anglais. La documentation développeurs, en anglais pour l'instant, vous accompagne dans votre premier script pas à pas, avec des tutoriels et la référence de chaque fonction. La FAQ donne des réponses courtes sur les comptes, les bots, les paquets et le réseau, chacune avec un lien vers l'explication complète. Et la référence du protocole Dofus liste chaque message de Dofus 3 qu'Asterobot connaît, avec ses champs.
D'abord stable, ensuite plus grand
Pour l'instant, l'objectif est simple : s'assurer que tout est stable, sur autant d'ordinateurs, de systèmes et de configurations que possible. Utilisez Asterobot, poussez-le dans ses retranchements, essayez de le casser, et dites-moi ce qui n'a pas marché sur le forum ou sur Discord, avec votre version d'Asterobot, la façon dont votre bot se connecte et le texte exact de l'erreur. Chaque rapport aide.
Une fois que tout tient, davantage de messages Dofus recevront un nom lisible, pour que les scripts et l'outil Réseau comprennent une plus grande partie du jeu. Côté paquets, les scripts de connexion prêts à l'emploi arrivent en premier, pour qu'un bot Full socket entre en jeu sans une ligne de code, suivis d'autres paquets sur lesquels construire. De nouvelles fonctionnalités arriveront dans Asterobot comme dans Asteroboard, et vos retours les façonneront : dites-moi sur le forum ce que vous aimeriez voir.
Chaque changement est listé dans les journaux des modifications d'Asterobot et d'Asteroboard.
Votre premier bot !
Quatre étapes, et aucun mot de passe Ankama à donner.
Téléchargez Asterobot: Récupérez l'archive pour votre système et décompressez-la où vous voulez.
Lancez-le et connectez-vous: Asteroboard s'ouvre dans votre navigateur. Confirmez le code de connexion avec votre compte asterobot.net.
Ajoutez un bot MITM: Téléchargez la version de Dofus à laquelle vous jouez dans le Gestionnaire de jeux, puis ajoutez un bot qui attend votre client de jeu.
Jouez: Lancez Dofus comme d'habitude. Votre chat, votre inventaire et les messages de votre partie s'affichent dans Asteroboard.
Télécharger Asterobot Lire le guide Forum Discord État des services
Merci de m'avoir lu jusqu'ici, et merci de donner sa chance à Asterobot. J'ai hâte de voir les bots que vous ferez tourner et les paquets que vous partagerez. On se retrouve sur le forum et sur Discord.
Smooth
![]()
![]()
![]()
Commentaires recommandés