Aller au contenu
BasiX Media

Guide

Pourquoi les liens d’images Discord expirent, et comment corriger ça sur un serveur FiveM.

Des galeries de téléphone pleines d’images cassées, des captures de reports qui s’ouvrent sur une erreur, de vieux embeds de logs vides : si votre serveur stocke des liens de pièces jointes Discord, ils n’ont jamais été faits pour durer. Voici ce qui a changé, comment le reconnaître, et comment envoyer vos fichiers vers un endroit permanent.

Sans carte · 3 Go offerts · Bande passante jamais facturée

Sur cette page

Ce qui a changé côté Discord

Pendant des années, un fichier posté dans un salon Discord obtenait une adresse simple sur cdn.discordapp.com, valable partout et pour toujours. Beaucoup de ressources FiveM en ont profité : exemples de screenshot-basic, scripts de téléphone et menus admin envoyaient les images sur un webhook Discord et gardaient l’URL de la pièce jointe comme si Discord était un hébergeur d’images.

Discord a ensuite commencé à signer les liens de pièces jointes. Un lien porte désormais des paramètres nommés ex, is et hm : une date d’expiration, une date d’émission et une signature. Dans le client Discord, les liens sont rafraîchis en silence, donc l’image s’affiche toujours dans le salon. Hors de Discord — dans une NUI de téléphone, un panel web, une ligne de base de données — le lien stocké cesse simplement de fonctionner après l’expiration, et retirer les paramètres ne le ressuscite pas.

Reconnaître le problème

Regardez l’adresse d’une image cassée. Si elle commence par https://cdn.discordapp.com/attachments/ ou https://media.discordapp.net/attachments/ et se termine par ?ex=…&is=…&hm=…, c’est un lien Discord expiré. Les symptômes sur un serveur FiveM sont constants : les photos de la galerie du téléphone s’affichent un jour puis deviennent des vignettes vides, les captures de reports s’ouvrent bien pour le staff le jour même mais plus une semaine après, et les images d’écran de chargement ou d’items hébergées dans un salon Discord disparaissent pour tous les joueurs en même temps.

Votre ressource n’a rien de cassé. Elle fait exactement ce pour quoi elle a été configurée ; c’est l’hébergeur en dessous qui a changé les règles.

La solution : un hébergeur fait pour ça, Discord pour les notifications

La correction durable consiste à ne plus utiliser Discord comme stockage. Envoyez le fichier vers un hébergeur de médias qui donne une adresse permanente, puis — si vous voulez toujours l’image dans un salon Discord — postez cette adresse dans le message ou l’embed. Discord affiche une image à partir de n’importe quelle URL publique : votre staff voit la même chose qu’avant, et le lien dans votre base continue de fonctionner.

Avec BasiX, le changement tient généralement en une ligne de configuration. LB Phone utilise sa méthode d’envoi Custom ; screenshot-basic et ScreenCapture peuvent envoyer directement au point d’envoi ; les scripts écrits pour Fivemanage ou Fivemerr n’ont besoin que du changement d’hôte. Chaque fichier obtient une adresse CDN directe qui n’expire pas, sauf si vous définissez une politique de rétention sur son dossier.

Le point d’envoi dont ont besoin la plupart des configs FiveM

https://upload.basix.media/api/v3/file
Authorization: Bearer VOTRE_CLE_BASIX
champ multipart : file

Les captures de reports, de bout en bout

Un schéma courant : une commande /report capture l’écran du joueur et poste l’image dans un salon du staff. Avec la ressource basix, la capture est envoyée directement depuis la machine du joueur via une URL présignée à usage unique, et le lien permanent est écrit dans vos logs à côté du report. Votre règle d’alerte Discord peut alors notifier le staff, et la capture s’ouvre encore des mois plus tard quand le même joueur est de nouveau reporté.

Lua — commande de report avec capture permanente

RegisterCommand('report', function(source, args)
    exports.basix:screenshot(source, { folder = 'reports' }, function(err, file)
        exports.basix:warn('Player report', {
            player = GetPlayerIdentifierByType(source, 'license'),
            metadata = { reason = table.concat(args, ' '), screenshot = file and file.url or nil, error = err },
        })
    end)
end)

Et les liens déjà cassés ?

Un lien Discord expiré ne peut pas être ranimé depuis l’extérieur de Discord. Si le message d’origine existe encore, l’image est toujours dans le salon et peut être téléchargée depuis le client Discord puis renvoyée ailleurs. Pour une galerie de téléphone de plusieurs milliers d’entrées, la réponse honnête est que les anciennes photos sont perdues sauf si les joueurs les réenregistrent ; l’important est que les nouvelles ne soient plus stockées de la même façon. Corrigez d’abord la cible d’envoi, puis décidez si un nettoyage en vaut la peine.

Questions

Les liens de pièces jointes Discord sont signés avec une expiration (les paramètres ex, is et hm). Le client Discord les rafraîchit ; partout ailleurs, un lien stocké ne marche plus une fois expiré.

À lire aussi

Mis à jour le 26 oct. 2026

Votre premier fichier en ligne en quelques minutes.

Inscrivez-vous, envoyez un fichier, copiez l’URL.

3 Go offerts · Sans carte · Bande passante non facturée

Liens d’images Discord qui expirent : la solution FiveM — BasiX