Ce document récapitule les principaux problèmes rencontrés et la manière dont ils ont été résolus, afin de garder un historique à titre pédagogique.
- Symptôme : Railway tentait d'utiliser Poetry (
poetry install --no-dev
) alors qu'on avait unrequirements.txt
et unDockerfile
. - Cause : Railway détectait un
pyproject.toml
ou un autre indicateur, forçant le builder Poetry. - Solution :
- Supprimer/renommer
pyproject.toml
. - Configurer
railway.toml
pour pointer explicitement sur le Dockerfile. - Vérifier les “Service Settings” (Start Command, Builder, etc.) pour enlever toute référence à Poetry.
- Supprimer/renommer
- Symptôme : Avertissement “Privileged message content intent is missing, commands may not work as expected.”
- Cause :
intents.message_content = True
n'était pas activé, ou non coché côté Discord Developer Portal. - Solution :
- Ajouter
intents.message_content = True
dans le code. - Aller dans Discord Developer Portal -> Bot -> Activer "Message Content Intent".
- Ajouter
- Symptôme : “AssertionError: Expected 'starttls' to have been called once. Called 0 times.”
- Cause : Le
with smtplib.SMTP(...) as server:
renvoieserver = mock_smtp.return_value.__enter__.return_value
, donc l’appel se fait sur l’objet retourné par__enter__()
. - Solution :
- Dans le test, utiliser
mock_server = mock_smtp.return_value.__enter__.return_value
. - Vérifier
mock_server.starttls.assert_called_once()
plutôt quemock_smtp.return_value.starttls()
.
- Dans le test, utiliser
- Symptôme : Les tests renvoient toujours les mêmes valeurs, même si on modifie
.env
. - Cause : Les tests surchargent
os.environ
dans la méthodesetUp()
. - Solution :
- Soit commenter l'override
os.environ[...] = ...
pour lire vraiment le.env
, - Soit accepter que les tests utilisent des valeurs fixes pour reproduire un comportement déterministe.
- Soit commenter l'override
- Symptôme : Les tests d'intégration du bot plantent au moment de créer
commands.Bot(command_prefix="!")
. - Cause : Sur les versions récentes de
discord.py
,intents
doit être spécifié. - Solution :
- Ajouter
intents=discord.Intents.default()
(ou un Intents personnalisé) lors de l'instantiation du bot.
- Ajouter
- Poetry vs pip : duplication de configuration.
- Permissions Discord : veiller à ce que le bot ait les droits de lire/écrire dans les canaux ciblés.
- Fuseau horaire : 23h sur Railway est UTC, attention au décalage si on veut 23h heure locale.
(Tu peux ajouter d’autres éléments au fur et à mesure.)