add doc about race condition when doing autocompletion
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/pr/publish Pipeline was successful

This commit is contained in:
Mylloon 2023-04-27 22:26:31 +02:00
parent 0214e4d17b
commit 4ca3a74187
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -209,6 +209,30 @@ même message.
Contrairement aux autres éléments, les boutons doivent se faire collecter via Contrairement aux autres éléments, les boutons doivent se faire collecter via
la fonction [`collect`](./src/buttons/loader.ts#L46) juste après leur déclaration. la fonction [`collect`](./src/buttons/loader.ts#L46) juste après leur déclaration.
## Autocomplétion
La réponse qu'attent Discord doit se faire obligatoirement sous 3 secondes.
Pour se faire on peut utiliser un timeout avec
[une race](https://fr.wikipedia.org/wiki/Situation_de_comp%C3%A9tition).
```typescript
let timeoutId: NodeJS.Timeout;
const delay = new Promise(function (_, reject) {
timeoutId = setTimeout(function () {
reject(new Error());
}, 2900); // correspond au temps du timeout en ms
});
const resultat = await Promise.race([delay, commandeQuiRenvoieUnPromise])
.then((res) => {
clearTimeout(timeoutId);
return resultatVoulu;
})
.catch(() => {
return resultatErreur; // correspond à temps écoulé ou erreur de notre commande
});
```
## Modifier du code ## Modifier du code
Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous