Skip to content

fix(rngdle): vérifie le tirage d’un membre lié après une carte non vérifiée - #400

Merged
AntoineJT merged 3 commits into
masterfrom
fix/rngdle-linked-roll
Nov 10, 2026
Merged

AntoineJT merged 3 commits into
masterfrom
fix/rngdle-linked-roll

Conversation

@AntoineJT

@AntoineJT AntoineJT commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

🇫🇷 Français

🎯 Résumé

Un tirage enregistré sur rngdle.com n'est plus affiché « Non connecté » parce qu'une carte non vérifiée a été dessinée avant. C'est le cas d'un membre qui lie son compte après une première carte, ou d'un membre déjà lié qui colle d'abord un tirage fait sans être connecté au site.

🤔 Motivation

  • Constaté : après un tirage collé « non connecté », les tirages connectés collés ensuite restent eux aussi « Non connecté », jusqu'à ce que quelqu'un lance /rngdle leaderboard. Deux façons d'y arriver : coller avant /rngdle link puis lier son compte, ou être déjà lié et coller d'abord un tirage fait sans être connecté sur rngdle.com.

  • Attendu : le tirage connecté est cherché sur rngdle.com, et la carte affiche les vraies données du membre.

  • Contexte : signalé par le mainteneur sur le serveur.

  • Cause : la vérification d'un résultat collé (verify() dans share-cards.ts) s'arrêtait avant d'interroger rngdle.com, pour deux raisons :

    • la carte du jour, réservée par le calculateur avant la liaison ;
    • l'attente de 10 minutes entre deux vérifications, comptée par membre et non par source, et lancée même quand rngdle.com répondait sans le tirage collé.

    /rngdle leaderboard « réparait » parce qu'il synchronise tous les comptes liés.

📦 Contenu

  • 🐛 La réservation du jour n'arrête plus que les membres non liés. Pour un membre lié, la vérification s'arrête une fois son tirage du jour enregistré, ce qui évite toujours les requêtes inutiles.
  • 🐛 L'attente de 10 minutes est comptée par source (calculateur, rngdle.com) : la liaison ne reste plus bloquée par une vérification faite avant.
  • 🐛 Un membre lié peut déclencher jusqu'à 3 vérifications sur rngdle.com en 10 minutes, sans délai entre elles : un tirage fait sans être connecté au site, éventuellement un autre, puis son tirage enregistré, qui est vérifié. Recoller un tirage introuvable ne relance rien. Si rngdle.com ne répond pas, il n'est plus interrogé avant la fin des 10 minutes. Le calculateur garde 1 vérification par 10 minutes.
  • 🔧 La recherche du numéro collé est faite par une seule fonction, findPasted.
  • 📝 docs/functional.md précise les nouvelles règles.
  • ✅ Tests de non-régression, vus en échec avant le correctif puis verts après. Ils couvrent :
    • la liaison après une carte du jour ;
    • l'attente remise à zéro à la liaison ;
    • un tirage d'hier encore vérifié ;
    • aucune requête une fois le tirage du jour enregistré ;
    • l'attente conservée quand on lie un autre pseudo ;
    • le tirage connecté collé juste après un tirage absent du site, sans délai ;
    • le même tirage recollé par erreur ne compte pas ;
    • au plus 3 vérifications en 10 minutes.
  • ✅ Trois passes de revue corrective et un /code-review. 2 245 tests passent ; build, oxlint, oxfmt et le build de la doc sont OK.

🧭 À noter

  • ⚠️ Le bot ne sait pas distinguer un tirage fait sans être connecté d'un tirage ancien ou de celui d'un autre membre : c'est pour ça que les vérifications sont limitées à 3 par 10 minutes.
  • ⚠️ On suppose que rngdle.com n'enregistre qu'un tirage par jour et par compte, et pas ceux faits sans être connecté. La synchronisation existante fait la même hypothèse.

🇬🇧 English

🎯 Summary

A roll recorded on rngdle.com is no longer shown as "Not linked" because an unverified card was drawn before. That happens to a member who links their account after a first card, or to a member already linked who first pastes a roll made while logged out of the site.

🤔 Motivation

  • Observed: after a roll pasted "not linked", the logged-in rolls pasted next stay "Not linked" too, until someone runs /rngdle leaderboard. Two ways to get there: pasting before /rngdle link and then linking, or being already linked and first pasting a roll made while logged out of rngdle.com.

  • Expected: the logged-in roll is looked up on rngdle.com, and the card shows the member's real data.

  • Context: reported by the maintainer on the server.

  • Root cause: the check of a pasted result (verify() in share-cards.ts) stopped before asking rngdle.com, for two reasons:

    • the day's card, claimed by the calculator before linking;
    • the 10-minute cooldown between two checks, counted per member rather than per source, and started even when rngdle.com answered without the pasted roll.

    /rngdle leaderboard "fixed" it because it syncs every linked account.

📦 What's included

  • 🐛 The day's claim only stops unlinked members now. For a linked member, the check stops once their roll of the day is recorded, which still avoids needless requests.
  • 🐛 The 10-minute cooldown is counted per source (calculator, rngdle.com): linking is no longer blocked by a check made before.
  • 🐛 A linked member may trigger up to 3 checks on rngdle.com in 10 minutes, back to back: a roll made logged out, maybe another, then their recorded roll, which is verified. Pasting a missing roll again asks nothing. If rngdle.com does not answer, it is not asked again before the 10 minutes end. The calculator keeps 1 check per 10 minutes.
  • 🔧 The pasted number is looked up by a single function, findPasted.
  • 📝 docs/functional.md states the new rules.
  • ✅ Regression tests, seen failing before the fix and passing after. They cover:
    • linking after a card of the day;
    • the cooldown reset on linking;
    • yesterday's roll still being verified;
    • no request once today's roll is recorded;
    • the cooldown kept when linking another username;
    • the logged-in roll pasted right after a roll the site does not have, with no delay;
    • the same roll pasted again by mistake does not count;
    • at most 3 checks in 10 minutes.
  • ✅ Three corrective review passes and a /code-review. 2,245 tests pass; build, oxlint, oxfmt and the docs build are OK.

🧭 Notes

  • ⚠️ The bot cannot tell a roll made logged out from an old roll or another member's: that is why checks are capped at 3 per 10 minutes.
  • ⚠️ This assumes rngdle.com records one roll per day and per account, and none made while logged out. The existing sync makes the same assumption.

📋 Checklist

  • 🇫🇷 Sur le serveur, coller un résultat non lié, lier son compte, coller le tirage suivant : carte vérifiée / 🇬🇧 On the server, paste an unlinked result, link the account, paste the next roll: verified card
  • 🇫🇷 Déjà lié : coller un tirage fait déconnecté du site, puis le tirage connecté juste après : carte vérifiée / 🇬🇧 Already linked: paste a roll made logged out of the site, then the logged-in roll right after: verified card

@AntoineJT AntoineJT added type: module Add a new module or edit an existing one scope: fix Fix a bug or a regression labels Nov 10, 2026
@AntoineJT
AntoineJT force-pushed the fix/rngdle-linked-roll branch from afb8aa7 to 3e0e8f8 Compare November 10, 2026 02:57
@AntoineJT AntoineJT changed the title fix(rngdle): vérifie le tirage d’un membre qui lie son compte après sa carte du jour fix(rngdle): vérifie le tirage d’un membre lié après une carte non vérifiée Nov 10, 2026
@AntoineJT
AntoineJT force-pushed the fix/rngdle-linked-roll branch 2 times, most recently from babea70 to b459990 Compare November 10, 2026 03:06
…a carte du jour

La carte vérifiée par le calculateur avant la liaison réservait le jour :
les résultats collés ensuite, une fois lié, n’étaient plus cherchés sur
rngdle.com et restaient « Non connecté » jusqu’à une synchronisation
(/rngdle leaderboard). Pour un membre lié, la vérification s’arrête
désormais une fois le tirage du jour enregistré.
L’attente de 10 minutes entre deux vérifications était comptée par
membre : une vérification par le calculateur juste avant la liaison
bloquait la première vérification sur rngdle.com. Elle est désormais
comptée par source (calculateur, rngdle.com).
…connecté

Un membre lié qui collait d’abord un tirage fait sans être connecté au
site, puis son tirage connecté, voyait ce dernier « Non connecté » :
la première vérification lançait l’attente de 10 minutes. rngdle.com
peut désormais être interrogé 3 fois en 10 minutes, sans délai ; un
tirage introuvable recollé ne relance rien, et un site qui ne répond
pas n’est plus interrogé avant la fin des 10 minutes.
@AntoineJT
AntoineJT force-pushed the fix/rngdle-linked-roll branch from b459990 to fba4cf7 Compare November 10, 2026 03:34
@AntoineJT
AntoineJT merged commit 7d22e53 into master Nov 10, 2026
17 checks passed
@AntoineJT
AntoineJT deleted the fix/rngdle-linked-roll branch November 10, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: fix Fix a bug or a regression type: module Add a new module or edit an existing one

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant