
Patchnote v3.4.2 (FR)
Version 3.4.2 – Corrections de stabilité & qualité de vie
- Vérification des dépendances améliorée
- Robustesse des appels API (Valorant + valorant-api.com)
- Logs plus propres
- Présence Discord – corrections personnalisées & menus
- Ajout d’un assistant d’installation interactif au lancement quand tu exécutes
python main.py :
-
y : installe le module manquant un par un.
-
a : installe toutes les dépendances via pip install -r requirements.txt.
-
n : annule et affiche la commande à lancer manuellement.
- En mode .exe PyInstaller, la vérification des dépendances est désactivée (on considère que tout est packagé) pour éviter les faux positifs comme
iso8601 "manquant".
- Ajout d’un helper pour installer un module unique et d’une meilleure détection du chemin de
requirements.txt (depuis les sources ou à côté de l’exe).
-
content_loader gère maintenant proprement les erreurs réseau / 404 / JSON invalides : tous les appels (/agents, /maps, /gamemodes, /competitivetiers, contenu Riot) sont protégés par try/except et .get() avec valeurs par défaut.
- Plus de crash du type
TypeError: 'NoneType' object is not subscriptable quand l’API renvoie None ou des champs manquants.
- Les boucles sur les agents / cartes / modes / rangs vérifient le type (
dict) et utilisent des fallback (en-US, chaînes vides) si les traductions ou identifiants manquent.
- Réduction drastique du bruit de logs :
urllib3.connectionpool, asyncio et PIL.Image sont forcés en WARNING.
- Le logger
rpc reste en DEBUG pour garder les infos utiles dans rpc.log sans spam (imports PIL, détails internes asyncio, etc.).
- Correction d’un bug critique côté Discord :
large_text ne peut plus être vide, ce qui causait l’erreur
ServerError: Child "activity" fails because child "assets" fails because child "large_text" fails because "large_text" is not allowed to be empty.
- En salon personnalisé (
CUSTOM_GAME_SETUP), si le nom de la carte n’est pas disponible, large_text tombe maintenant proprement sur un texte par défaut localisé (état "préparation personnalisée") au lieu d’une chaîne vide.
- Détection de partie personnalisée corrigée :
- Maintenant déclenchée uniquement si :
-
partyState == "CUSTOM_GAME_SETUP" (racine ou partyPresenceData),
- ou
queueId == "custom",
- ou
provisioningFlow == "CustomGame".
- Les anciens heuristiques trop larges (juste la présence d’un
matchMap / customGameTeam) ont été retirés.
- Résultat : le client n’affiche plus "préparation de personnalisée" quand tu es simplement au menu / en file standard (ex.
unrated).