{"id":3416,"date":"2023-02-04T13:00:00","date_gmt":"2023-02-04T12:00:00","guid":{"rendered":"https:\/\/carnivaloftime.com\/?p=3416"},"modified":"2023-02-18T11:05:28","modified_gmt":"2023-02-18T10:05:28","slug":"les-coulisses-de-ladministration-dhyliahtz","status":"publish","type":"post","link":"https:\/\/carnivaloftime.com\/index.php\/2023\/02\/04\/les-coulisses-de-ladministration-dhyliahtz\/","title":{"rendered":"Les coulisses de l&rsquo;administration d&rsquo;Hyliaht&rsquo;z"},"content":{"rendered":"\n<p>Mon bot Discord fait maison, Hyliaht&rsquo;z, a d\u00e9j\u00e0 eu droit \u00e0 2 articles, dans lesquels sont expliqu\u00e9es les commandes pour <a href=\"https:\/\/carnivaloftime.com\/index.php\/2023\/01\/14\/jouer-sur-discord-avec-hyliahtz\/\" target=\"_blank\" rel=\"noreferrer noopener\">joueurs<\/a> et pour <a href=\"https:\/\/carnivaloftime.com\/index.php\/2023\/01\/28\/etre-maitre-du-jeu-sur-discord-avec-hyliahtz\/\" target=\"_blank\" rel=\"noreferrer noopener\">MJ<\/a>.&nbsp;<\/p>\n\n\n\n<p>Mais je n&rsquo;ai pas encore sp\u00e9cialement parl\u00e9 de son d\u00e9veloppement. Or, parmi vous se cachent peut-\u00eatre des curieux qui s&rsquo;interrogent sur le travail que \u00e7a implique, voire des cr\u00e9ateurs qui aimeraient d\u00e9ployer leur propre bot et se demandent comment s&rsquo;y prendre.<br>Alors dans cet article, on va diss\u00e9quer tout \u00e7a !<\/p>\n\n\n\n<p>Il est temps de se placer de l&rsquo;autre c\u00f4t\u00e9 de l&rsquo;interface utilisateur, et de regarder un peu les rouages qui font tourner Hyliaht&rsquo;z.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Impl\u00e9mentation&nbsp;<\/h3>\n\n\n\n<p>Tout commence sur <a rel=\"noreferrer noopener\" href=\"https:\/\/discord.com\/developers\/\" target=\"_blank\">https:\/\/discord.com\/developers\/<\/a><br>Ici, n&rsquo;importe qui peut gratuitement cr\u00e9er son bot en quelques clics, en renseignant son nom, son avatar et sa description.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"292\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-67.png\" alt=\"\" class=\"wp-image-4368\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-67.png 771w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-67-300x114.png 300w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-67-768x291.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n\n\n\n<p>\u00c7a prend moins de 5 minutes, et POUF, le bot est l\u00e0.<br>Vous pouvez m\u00eame g\u00e9n\u00e9rer un lien d&rsquo;invitation pour qu&rsquo;il rejoigne vos serveurs Discord !<\/p>\n\n\n\n<p>Bon, par contre, il ne fait rien du tout, encore. Mais au moins vous avez r\u00e9cup\u00e9r\u00e9 un identifiant secret qui vous permettra ensuite, en envoyant des requ\u00eates, d&rsquo;agir au nom du bot.&nbsp;C&rsquo;est l\u00e0 qu&rsquo;il va falloir coder !&nbsp;<br>Et vous avez le choix.<\/p>\n\n\n\n<p>Plusieurs biblioth\u00e8ques ont \u00e9t\u00e9 mises \u00e0 disposition pour communiquer avec l&rsquo;API Discord, l&rsquo;une des plus populaires utilisant le langage python.<br>Le code source d&rsquo;Hyliath&rsquo;z, lui, est \u00e9crit en langage<strong> C#<\/strong>, avec la biblioth\u00e8que <a href=\"https:\/\/discordnet.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">Discord.NET<\/a>.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"398\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-64.png\" alt=\"\" class=\"wp-image-4364\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-64.png 751w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-64-300x159.png 300w\" sizes=\"auto, (max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<p>Concr\u00e8tement, cette biblioth\u00e8que permet d&rsquo;obtenir un environnement o\u00f9 chaque commande du bot est impl\u00e9ment\u00e9e par une fonction, comme ceci :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[SlashCommand(\"hello\", \"Dit bonjour\")]\npublic async Task SayHelloAsync()\n{\n    await RespondAsync(\"Bien le bonjour \u00e0 vous !\");\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"443\" height=\"172\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-65.png\" alt=\"\" class=\"wp-image-4365\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-65.png 443w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-65-300x116.png 300w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"84\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-66.png\" alt=\"\" class=\"wp-image-4366\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-66.png 415w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-66-300x61.png 300w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/figure>\n\n\n\n<p>Et toutes les informations sur le serveur, le salon, les utilisateurs et leurs messages sont accessibles dans la limite des permissions accord\u00e9es \u00e0 votre bot.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ISocketMessageChannel channel = Context.Channel;    \/\/ Salon de jeu d'o\u00f9 vient la commande\nSocketGuild guild = Context.Guild;                  \/\/ Serveur Discord d'o\u00f9 vient la commande\nSocketUser user = Context.User;                     \/\/ Utilisateur ayant rentr\u00e9 la commande<\/pre>\n\n\n\n<p>\u00c0 partir de l\u00e0, \u00e0 vous de programmer la logique que vous d\u00e9sirez.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e9bergement<\/h3>\n\n\n\n<p>Le programme que vous allez coder pour envoyer des requ\u00eates au nom de votre bot, il faut qu&rsquo;un ordinateur l&rsquo;ex\u00e9cute. Sinon, le bot appara\u00eetra hors ligne, et il ne se passera \u00e9videmment jamais rien.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"391\" height=\"104\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-72.png\" alt=\"\" class=\"wp-image-4373\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-72.png 391w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-72-300x80.png 300w\" sizes=\"auto, (max-width: 391px) 100vw, 391px\" \/><\/figure>\n\n\n\n<p>Vous pouvez utiliser votre ordinateur personnel, \u00e9ventuellement. Mais vous ne pourrez plus l&rsquo;\u00e9teindre ou le red\u00e9marrer sans rendre le bot indisponible.&nbsp; Une solution plus commune est donc de passer par un serveur externe.&nbsp;<br>C&rsquo;est plus compliqu\u00e9. Il faut savoir comment le configurer, installer Dotnet dessus, et en plus \u00e7a n&rsquo;est pas gratuit. Mais au moins c&rsquo;est une plate-forme qui pourra faire fonctionner le bot en continu.&nbsp;<\/p>\n\n\n\n<p>Hyliaht&rsquo;z est h\u00e9berg\u00e9 sur un VPS (serveur priv\u00e9 virtuel) qui me co\u00fbte moins de 5\u20ac par mois, chez <strong>OVH<\/strong>. Rien de tr\u00e8s cher, donc. <br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.ovhcloud.com\/fr\/vps\/\" target=\"_blank\">https:\/\/www.ovhcloud.com\/fr\/vps\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"530\" height=\"297\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-69.png\" alt=\"\" class=\"wp-image-4370\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-69.png 530w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-69-300x168.png 300w\" sizes=\"auto, (max-width: 530px) 100vw, 530px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Lorsque le datacenter d&rsquo;OVH a pris feu \u00e0 Strasbourg, le PC qui faisait fonctionner Hyliaht&rsquo;z a \u00e9t\u00e9 arr\u00eat\u00e9, et le bot est devenu indisponible. Une belle occasion de rappeler que si ce n&rsquo;est pas votre ordinateur personnel qui h\u00e9berge votre bot, c&rsquo;en est un autre quelque part dans le monde, et il peut toujours lui arriver des bricoles.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Environnement de test<\/h3>\n\n\n\n<p>En r\u00e8gle g\u00e9n\u00e9rale, mieux vaut \u00e9viter de d\u00e9ployer une fonctionnalit\u00e9 qui n&rsquo;a pas \u00e9t\u00e9 test\u00e9e.<br>Il est plus sage de tester votre code dans l&rsquo;ombre, et de ne mettre \u00e0 jour le bot que lorsque vous \u00eates s\u00fbr de votre coup.&nbsp;<\/p>\n\n\n\n<p>Personnellement, j&rsquo;ai cr\u00e9\u00e9 un bot de test qui s&rsquo;appelle <strong>Hyliaht&rsquo;z B\u00eata<\/strong> et que je peux tester librement sur un serveur Discord d\u00e9di\u00e9.&nbsp;Au moins, comme \u00e7a, je suis tranquille.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"213\" height=\"40\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-71.png\" alt=\"\" class=\"wp-image-4372\"\/><\/figure>\n\n\n\n<p>J&rsquo;ai aussi cr\u00e9\u00e9 des commandes utilisateur sp\u00e9ciales pour debugger le bot, ou ex\u00e9cuter des actions d&rsquo;administration.&nbsp;<br>Elles sont li\u00e9es \u00e0 mon compte Discord et au r\u00f4le <strong>Sage<\/strong>. Donc m\u00eame les MJ ne peuvent pas y acc\u00e9der.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/nayru<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"410\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-73.png\" alt=\"\" class=\"wp-image-4374\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-73.png 577w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-73-300x213.png 300w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure>\n\n\n\n<p>Le bot a besoin d&rsquo;un certain nombre de r\u00f4les sur le serveur Discord, pour fonctionner.&nbsp;Et la commande <code>\/nayru<\/code> a pour but de les cr\u00e9er automatiquement.&nbsp;Gr\u00e2ce \u00e0 \u00e7a, je peux tr\u00e8s rapidement int\u00e9grer le bot \u00e0 un nouveau serveur.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/farore<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"255\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-74.png\" alt=\"\" class=\"wp-image-4375\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-74.png 637w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-74-300x120.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure>\n\n\n\n<p>Cette commande permet tout b\u00eatement d&rsquo;afficher l&rsquo;\u00e9tat de la m\u00e9moire d&rsquo;Hyliath&rsquo;z. C&rsquo;est-\u00e0-dire qu&rsquo;elle affiche les serveurs, les salons et les joueurs connus du bot.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/din @User<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"438\" height=\"293\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-75.png\" alt=\"\" class=\"wp-image-4376\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-75.png 438w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-75-300x201.png 300w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/figure>\n\n\n\n<p>Des fois, pour reproduire les conditions d&rsquo;un bug, ou juste pour afficher un exemple, il est utile de contr\u00f4ler le r\u00e9sultat d&rsquo;un jet.&nbsp; Dans cet esprit, <code>\/din<\/code> fournit une interface pour modifier la valeur des d\u00e9s et leur sauvegarde, pour un joueur sp\u00e9cifique. M\u00eame le nombre de relances restantes peut \u00eatre directement \u00e9dit\u00e9 !&nbsp;<\/p>\n\n\n\n<p>Mais ce n&rsquo;est pas tout.<br>Utilis\u00e9e sans param\u00e8tre, la commande permet aussi de contr\u00f4ler la valeur obligatoire et la valeur maudite du Vice au rang 2.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/din<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"435\" height=\"169\" src=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-76.png\" alt=\"\" class=\"wp-image-4377\" srcset=\"https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-76.png 435w, https:\/\/carnivaloftime.com\/wp-content\/uploads\/2023\/01\/image-76-300x117.png 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Limitations<\/h3>\n\n\n\n<p>Il faut savoir, tout de m\u00eame, que le syst\u00e8me d&rsquo;interactions de Discord est assez neuf. Et comme tout ce qui est trop r\u00e9cent, c&rsquo;est un peu lacunaire.&nbsp;<br>J&rsquo;ai donc d\u00fb composer avec des contraintes dont je me serais bien pass\u00e9, comme :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le maximum de 5 commandes utilisateur<\/li>\n\n\n\n<li>Le maximum de 25 boutons apr\u00e8s une interaction<\/li>\n\n\n\n<li>L&rsquo;impossibilit\u00e9 d&rsquo;utiliser des emojis en taille large avec du texte<\/li>\n\n\n\n<li>Le syst\u00e8me de permissions d\u00e9finies par r\u00f4les qui ne fonctionne pas<\/li>\n\n\n\n<li>Le d\u00e9lai de 3 secondes pour r\u00e9pondre \u00e0 une requ\u00eate<\/li>\n\n\n\n<li>Les param\u00e8tres d&rsquo;int\u00e9gration d&rsquo;application qui sont inaccessibles sur mobile<\/li>\n<\/ul>\n\n\n\n<p>Et si vous faites votre propre bot, des contraintes, vous en trouverez d&rsquo;autres ! Ce n&rsquo;est pas ce qui manque.&nbsp;<\/p>\n\n\n\n<p>Heureusement, ce qui est cool, c&rsquo;est que Discord \u00e9volue vite. Des corrections et de nouvelles fonctionnalit\u00e9s sont soumises r\u00e9guli\u00e8rement.&nbsp; Il est donc possible que ces limites sautent et que d&rsquo;autres standards \u00e9mergent. C&rsquo;est pourquoi je vais continuer de veiller au grain et maintenir Hyliaht&rsquo;z \u00e0 jour.&nbsp;<\/p>\n\n\n\n<p>Ce genre de travail n&rsquo;est jamais vraiment termin\u00e9 !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mon bot Discord fait maison, Hyliaht&rsquo;z, a d\u00e9j\u00e0 eu droit \u00e0 2 articles, dans lesquels sont expliqu\u00e9es les commandes pour joueurs et pour MJ.&nbsp; Mais je n&rsquo;ai pas encore sp\u00e9cialement parl\u00e9 de son d\u00e9veloppement. Or, parmi vous se cachent peut-\u00eatre des curieux qui s&rsquo;interrogent sur le travail que \u00e7a implique, voire des cr\u00e9ateurs qui aimeraient d\u00e9ployer leur propre bot et se demandent comment s&rsquo;y prendre.Alors dans cet article, on va diss\u00e9quer tout \u00e7a ! Il est temps de se placer de l&rsquo;autre c\u00f4t\u00e9 de l&rsquo;interface utilisateur, et de regarder un peu les rouages qui font tourner Hyliaht&rsquo;z. Impl\u00e9mentation&nbsp; Tout commence sur https:\/\/discord.com\/developers\/Ici, n&rsquo;importe qui peut gratuitement cr\u00e9er son bot en quelques clics, en renseignant son nom, son avatar et sa description.&nbsp; \u00c7a prend moins de 5 minutes, et POUF, le bot est l\u00e0.Vous pouvez m\u00eame g\u00e9n\u00e9rer un lien d&rsquo;invitation pour qu&rsquo;il rejoigne vos serveurs Discord ! Bon, par contre, il ne fait rien du tout, encore. Mais au moins vous avez r\u00e9cup\u00e9r\u00e9 un identifiant secret qui vous permettra ensuite, en envoyant des requ\u00eates, d&rsquo;agir au nom du bot.&nbsp;C&rsquo;est l\u00e0 qu&rsquo;il va falloir coder !&nbsp;Et vous avez le choix. Plusieurs biblioth\u00e8ques ont \u00e9t\u00e9 mises \u00e0 disposition pour communiquer avec l&rsquo;API Discord, l&rsquo;une des plus populaires utilisant le langage python.Le code source d&rsquo;Hyliath&rsquo;z, lui, est \u00e9crit en langage C#, avec la biblioth\u00e8que Discord.NET.&nbsp; Concr\u00e8tement, cette biblioth\u00e8que permet d&rsquo;obtenir un environnement o\u00f9 chaque commande du bot est impl\u00e9ment\u00e9e par une fonction, comme ceci : [SlashCommand(\u00ab\u00a0hello\u00a0\u00bb, \u00ab\u00a0Dit bonjour\u00a0\u00bb)] public async Task SayHelloAsync() { await RespondAsync(\u00ab\u00a0Bien le bonjour \u00e0 vous !\u00a0\u00bb); } Et toutes les informations sur le serveur, le salon, les utilisateurs et leurs messages sont accessibles dans la limite des permissions accord\u00e9es \u00e0 votre bot.&nbsp; ISocketMessageChannel channel = Context.Channel; \/\/ Salon de jeu d&rsquo;o\u00f9 vient la commande SocketGuild guild = Context.Guild; \/\/ Serveur Discord d&rsquo;o\u00f9 vient la commande SocketUser user = Context.User; \/\/ Utilisateur ayant rentr\u00e9 la commande \u00c0 partir de l\u00e0, \u00e0 vous de programmer la logique que vous d\u00e9sirez. H\u00e9bergement Le programme que vous allez coder pour envoyer des requ\u00eates au nom de votre bot, il faut qu&rsquo;un ordinateur l&rsquo;ex\u00e9cute. Sinon, le bot appara\u00eetra hors ligne, et il ne se passera \u00e9videmment jamais rien. Vous pouvez utiliser votre ordinateur personnel, \u00e9ventuellement. Mais vous ne pourrez plus l&rsquo;\u00e9teindre ou le red\u00e9marrer sans rendre le bot indisponible.&nbsp; Une solution plus commune est donc de passer par un serveur externe.&nbsp;C&rsquo;est plus compliqu\u00e9. Il faut savoir comment le configurer, installer Dotnet dessus, et en plus \u00e7a n&rsquo;est pas gratuit. Mais au moins c&rsquo;est une plate-forme qui pourra faire fonctionner le bot en continu.&nbsp; Hyliaht&rsquo;z est h\u00e9berg\u00e9 sur un VPS (serveur priv\u00e9 virtuel) qui me co\u00fbte moins de 5\u20ac par mois, chez OVH. Rien de tr\u00e8s cher, donc. https:\/\/www.ovhcloud.com\/fr\/vps\/ Lorsque le datacenter d&rsquo;OVH a pris feu \u00e0 Strasbourg, le PC qui faisait fonctionner Hyliaht&rsquo;z a \u00e9t\u00e9 arr\u00eat\u00e9, et le bot est devenu indisponible. Une belle occasion de rappeler que si ce n&rsquo;est pas votre ordinateur personnel qui h\u00e9berge votre bot, c&rsquo;en est un autre quelque part dans le monde, et il peut toujours lui arriver des bricoles. Environnement de test En r\u00e8gle g\u00e9n\u00e9rale, mieux vaut \u00e9viter de d\u00e9ployer une fonctionnalit\u00e9 qui n&rsquo;a pas \u00e9t\u00e9 test\u00e9e.Il est plus sage de tester votre code dans l&rsquo;ombre, et de ne mettre \u00e0 jour le bot que lorsque vous \u00eates s\u00fbr de votre coup.&nbsp; Personnellement, j&rsquo;ai cr\u00e9\u00e9 un bot de test qui s&rsquo;appelle Hyliaht&rsquo;z B\u00eata et que je peux tester librement sur un serveur Discord d\u00e9di\u00e9.&nbsp;Au moins, comme \u00e7a, je suis tranquille. J&rsquo;ai aussi cr\u00e9\u00e9 des commandes utilisateur sp\u00e9ciales pour debugger le bot, ou ex\u00e9cuter des actions d&rsquo;administration.&nbsp;Elles sont li\u00e9es \u00e0 mon compte Discord et au r\u00f4le Sage. Donc m\u00eame les MJ ne peuvent pas y acc\u00e9der. \/nayru Le bot a besoin d&rsquo;un certain nombre de r\u00f4les sur le serveur Discord, pour fonctionner.&nbsp;Et la commande \/nayru a pour but de les cr\u00e9er automatiquement.&nbsp;Gr\u00e2ce \u00e0 \u00e7a, je peux tr\u00e8s rapidement int\u00e9grer le bot \u00e0 un nouveau serveur.&nbsp; \/farore Cette commande permet tout b\u00eatement d&rsquo;afficher l&rsquo;\u00e9tat de la m\u00e9moire d&rsquo;Hyliath&rsquo;z. C&rsquo;est-\u00e0-dire qu&rsquo;elle affiche les serveurs, les salons et les joueurs connus du bot. \/din @User Des fois, pour reproduire les conditions d&rsquo;un bug, ou juste pour afficher un exemple, il est utile de contr\u00f4ler le r\u00e9sultat d&rsquo;un jet.&nbsp; Dans cet esprit, \/din fournit une interface pour modifier la valeur des d\u00e9s et leur sauvegarde, pour un joueur sp\u00e9cifique. M\u00eame le nombre de relances restantes peut \u00eatre directement \u00e9dit\u00e9 !&nbsp; Mais ce n&rsquo;est pas tout.Utilis\u00e9e sans param\u00e8tre, la commande permet aussi de contr\u00f4ler la valeur obligatoire et la valeur maudite du Vice au rang 2. \/din Limitations Il faut savoir, tout de m\u00eame, que le syst\u00e8me d&rsquo;interactions de Discord est assez neuf. Et comme tout ce qui est trop r\u00e9cent, c&rsquo;est un peu lacunaire.&nbsp;J&rsquo;ai donc d\u00fb composer avec des contraintes dont je me serais bien pass\u00e9, comme : Et si vous faites votre propre bot, des contraintes, vous en trouverez d&rsquo;autres ! Ce n&rsquo;est pas ce qui manque.&nbsp; Heureusement, ce qui est cool, c&rsquo;est que Discord \u00e9volue vite. Des corrections et de nouvelles fonctionnalit\u00e9s sont soumises r\u00e9guli\u00e8rement.&nbsp; Il est donc possible que ces limites sautent et que d&rsquo;autres standards \u00e9mergent. C&rsquo;est pourquoi je vais continuer de veiller au grain et maintenir Hyliaht&rsquo;z \u00e0 jour.&nbsp; Ce genre de travail n&rsquo;est jamais vraiment termin\u00e9 !<\/p>\n","protected":false},"author":1,"featured_media":4435,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-3416","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hyliahtz"],"_links":{"self":[{"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/posts\/3416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/comments?post=3416"}],"version-history":[{"count":6,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/posts\/3416\/revisions"}],"predecessor-version":[{"id":4411,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/posts\/3416\/revisions\/4411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/media\/4435"}],"wp:attachment":[{"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/media?parent=3416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/categories?post=3416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/carnivaloftime.com\/index.php\/wp-json\/wp\/v2\/tags?post=3416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}