Que faire en cas de bugs

Il existe la commande !tfix, disponible un peu tout le temps, qui donne des outils avancés aux T.O.s pour essayer de corriger d’éventuels problèmes survenant pendant leur tournoi, ou tout simplement effectuer des actions avancées et contrôlées.

Utilisez !help tfix pour voir l’ensemble des commandes proposées, et !help tfix <commande> pour voir une description détaillée de l’une des commandes.

Info

Si aucune des commandes décrites ci-dessous ne résout votre problème, ou bien si vous n’êtes pas trop confiant, rejoignez mon serveur et demandez moi de vous aider. Ces commandes ne pourront jamais résoudre ou vous diagnostiquer tous les problèmes, le propriétaire du bot doit donc vous aider pour regarder les logs ou effectuer des manipulations.

Un channel #support-urgent est par ailleurs disponible sur mon serveur pour les cas de bugs critiques se produisant en plein milieu d’un tournoi, mentionnez le rôle et on vous aidera le plus vite possible !

Je vais donc décrire ces commandes, en commençant par les plus safes.

Actualisation

!tfix refresh

Actualise les informations du tournoi depuis Challonge. Cela permet de mettre à jour le titre du tournoi ainsi que la limite de participants qui ne sont récupérés que à l’étape initiale du !setup.

Info

La date prévue du lancement du tournoi ne peut pas être changée en raison de tous les calculs et vérifications demandées pour les dates automatiques des inscriptions et du check-in, se basant là dessus.

Dans ce cas, repartez de 0 avec !reset.

Inscriptions

!tfix registerfromrole

Voici une commande qui peut s’avérer très pratique si un problème vous pousse à reset.

Cette commande permet d’inscrire tous les membres d’un rôle de votre serveur au tournoi d’un coup !

Notez par ailleurs que si le check-in est passé, tous les membres de ce rôle, y compris ceux déjà inscrits, seront check. Vous pouvez donc vous servir de ceci pour check un rôle également.

Exemple

!tfix registerfromrole Participant au tournoi

Cela peut prendre un moment selon le nombre de membres à mettre à jour.

Récuparation et rechargement

!tfix restore

J’espère que vous ne serez jamais amené à utiliser cette commande… Elle n’est pas dangereuse, mais est utile dans un cas de mauvaise récupération d’un tournoi.

Lors d’un rechargement du module, voir même du restart du bot qui peut arriver à tout moment, le bot va effectuer un processus pour recharger le tournoi à partir de la sauvegarde du disque, et tout relancer correctement.

Il est possible que ce processus échoue, auquel cas le bot va soudainement se mettre à dire qu’il n’y a aucun tournoi en cours, peu importe les commandes utilisées.

Dans ce cas, utilisez !tfix restore pour voir si le bot va réussir à reprendre correctement le tournoi.

!tfix reload

Probablement la commande la plus efficace de toutes, c’est celle qui va effectuer le plus d’actions mais qui est également très peu risquée.

En effet, cette commande va tout sauvegarder, effacer de la mémoire tout les objets liés à votre serveur, puis reconstruire tous les objets à partir de ce qui est sauvegardé. Voyez cela comme le fait de redémarrer Windows et pouf magie plus de problèmes.

Par ailleurs, si vous décidez d’éditer vos paramètres avec !tset, vous devez passer par cette commande afin que les changements s’appliquent à votre tournoi (une fois le tournoi setup, la config est importée et ne bouge plus, sauf en cas de reload). Evitez cependant d’éditer les horaires des inscriptions et du check-in puis de reload, vous pourriez vous retrouver avec des inscriptions se lancant puis se fermant tout de suite…

!tfix unlock

Une commande un peu spéciale qui permet de débloquer certaines commandes.

Il se peut que les commandes modifiant le bracket, tel que !win, !ff ou !rm, bloquent et ne répondent pas, tandis que les autres commandes répondent correctement. Dans ce cas, l’usage de cette commande peut débloquer la situation.

L'explication technique

Il y a eu parfois des conflits entre actualisation du bracket et réglage d’un score. Avant la beta 8, il pouvait y avoir un problème lorsque un score était réglé en même temps que la récupération des matchs, le bot relançait alors un match à tort pour ensuite y remettre fin 15 secondes plus tard.

Pour éviter ce problème, les commandes ci dessus ne peuvent pas fonctionner en même temps que l’actualisation du bracket, elles sont donc bloquées en attendant la fin (cela ne devrait pas prendre plus d’une seconde). Cependant, si jamais un bug se produit et ne déverouille pas correctement ces commandes, alors vous pouvez utiliser cette commande pour forcer la reprise des commandes.

Et pour ceux qui connaissent Python et asyncio, on utilise un objet asyncio.Lock() pour chaque tournoi, et la commande !tfix unlock va forcer le déverouillage avec lock.release().

Tâche de fond

Vous pouvez avoir plus de détails sur la tâche de fond des tournois ici.

!tfix pausetask

Met la tâche de fond en pause. Alors, le bot arrêtera d’actualiser les informations, plus aucun match ne sera lancé, aucun participant DQ, aucun set on stream lancé… Le tournoi se met véritablement en pause.

Les commandes restent accessibles, tel que !win, mais il n’y aura pas de nouveau match lancé.

Ceci est utile si vous souhaitez manipuler le bracket, pour éviter que 25 nouveaux matchs se lancent pour être interrompus 30 secondes plus tard.

!tfix runtaskonce

Lance la fonction une seule fois, sans pour autant relancer la boucle.

Utile en cas de manipulations de bracket, et que vous voulez confirmer les changements avant de relancer pour de bon.

!tfix resumetask

Relance la tâche de fond pour de bon après sa pause, elle s’exécutera de nouveau toutes les 15 secondes.

Si vous observez que la tâche s’est stoppée en raison d’un bug, c’est la commande à effectuer pour tenter de reprendre le tournoi ! Notez cependant que la tâche ne reprendra réellement que si aucun bug ne se déroule lors de la première exécution.

La commande !tinfo précise si la tâche n’est pas en cours d’exécution.

Zone de danger

Attention ! Les commandes ci-dessous sont dangereuses !

Vraiment, j’insiste très fort sur ce point, lisez absolument la description des commandes avant de vous en servir avec !help tfix <commande>, la plupart ne demandent pas confirmation !

Vous devez être assez sûr de vous avant de toucher à certaines commandes, car vous fouillez directement dans le fonctionnement interne du module.

N’hésitez pas à me demander de l’aide sur Discord @El Laggron#0260 (serveur à gauche) avant de passer par là.

!tfix resetmatches

Disponible pendant le déroulement du tournoi, cette commande va effacer toutes les informations internes à propos des matchs en cours.

Ils ne sont pas annulés, le bot va immédiatement récupérer les matchs de Challonge et les relancer (si la tâche est active).

Ce qui se passe, c’est que le bot va oublier ce qu’il connait lui même des matchs, à savoir les channels, l’heure de démarrage, de fin, les streams… Tout sera donc relancé.

Note

Les channels existants ne seront pas supprimés, sauf si vous le demandez en ajoutant un argument additionel, appelez la commande de cette façon :

  • !tfix resetmatches yes

!tfix resetparticipants

Disponible avant le début du tournoi (inscriptions), cette commande va effacer tous les inscrits enregistrés.

Si ils ont été upload sur le bracket, ils y resteront jusqu’à ce que vous refaites !upload.

Vous pouvez également laisser la liste de participants comme elle est, et le bot devrait correctement récupérer tout le monde lors du lancement du tournoi.

Note

Les rôles des participants ne seront pas retirés, sauf si vous le demandez en ajoutant un argument additionel, appelez la commande de cette façon :

  • !tfix resetparticipants yes

!tfix hardreset

Vous vous en doutez au nom, réinitialisation pure et dure de tout ce que le bot connait du tournoi actuel, retour à l’état initial, prêt à setup un nouveau tournoi.

Cette commande est très directe, tout ce qu’elle fait, c’est effacer de la mémoire interne et des sauvegardes les données du tournoi. Plus rien ne sera en cours, tout est annulé.

Notez que la commande n’effectue aucune des actions suivantes :

  • N’importe quelle manipulation du Bracket. Challonge n’est jamais appelé, il reste tel quel.
  • Retrait des rôles. Tout le monde conserve son rôle de participant.
  • Suppression des channels. Tout reste présent.
  • Prévention des membres. Aucun MP, aucune annonce, personne de prévenu sauf la personne exécutant la commande, puis le bot va soudainement dire “Aucun tournoi en cours”. C’est votre rôle de prévenir les joueurs de cette action.

Evidemment, aucun retour en arrière possible, cette commande est définitive, donc à utiliser avec très grande précaution.


Encore une fois je vous rappelle que nous sommes disponible pour vous aider en cas de problème. Moi, El Laggron, l’auteur de ce module, et mon équipe (Xyleff et red ? lol je sais pas encore) sommes disponible sur mon serveur pour répondre à vos questions et vous aider.