diff --git a/docs/discord/messages/faire-des-annonces-et-autre.mdx b/docs/discord/messages/faire-des-annonces-et-autre.mdx index f066a85..70e30e7 100644 --- a/docs/discord/messages/faire-des-annonces-et-autre.mdx +++ b/docs/discord/messages/faire-des-annonces-et-autre.mdx @@ -23,7 +23,7 @@ Rien de plus simple : il suffit d'écrire `#` suivi du nom du canal. Tu peux mê informations @@ -38,20 +38,20 @@ Pour créer un hyper-lien vers un utilisateur ou même un rôle, c'est une synta HunteRoi (utilisateur) EverKill (utilisateur) Modérateur (rôle) @@ -68,14 +68,14 @@ Discord possède également 2 rôles spéciaux : "here" et "everyone". Le premie everyone (rôle spécial) here (rôle spécial) diff --git a/docs/discord/messages/go-live.mdx b/docs/discord/messages/go-live.mdx index af4810f..1eeaa2e 100644 --- a/docs/discord/messages/go-live.mdx +++ b/docs/discord/messages/go-live.mdx @@ -14,13 +14,13 @@ Nous te proposons de consulter directement le tutoriel réalisé par Discord pou
  • - + Go Live FAQ
  • - + Go Live FAQ diff --git a/docs/discord/messages/le-markdown.mdx b/docs/discord/messages/le-markdown.mdx index 1d0e7c1..44ce56d 100644 --- a/docs/discord/messages/le-markdown.mdx +++ b/docs/discord/messages/le-markdown.mdx @@ -13,7 +13,7 @@ import { Discord permet de mettre son texte en forme à l'aide de [la syntaxe Markdown](https://www.markdownguide.org/). :::note -Si tu veux en apprendre plus sur Discord, nous t'invitons à consulter [leurs tutoriels](https://support.discordapp.com/hc/fr/categories/115000217151). +Si tu veux en apprendre plus sur Discord, nous t'invitons à consulter [leurs tutoriels](https://support.discord.com/hc/fr/categories/115000217151). ::: Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables dans Discord afin de mettre en forme tes messages! 😉 @@ -21,21 +21,21 @@ Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables d Tu peux écrire en italique si tu entoures ton texte du symbole * ou du symbole _ comme ceci: *italique* ou _italique_. Tu peux écrire en gras si tu entoures ton texte 2x du symbole * comme ceci: **gras**. Tu peux écrire en{' '} barré si tu @@ -43,21 +43,21 @@ Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables d Tu peux écrire en souligné si tu entoures ton texte 2x du symbole _ comme ceci: __souligné__. Tu peux écrire en caché si tu entoures ton texte 2x du symbole | comme ceci: ||souligné||. Tu peux écrire en
    citation
    si tu commences ton message avec le symbole > comme ceci: @@ -65,14 +65,14 @@ Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables d
    Tu peux écrire en code si tu entoures ton texte avec le symbole ` comme ceci: `code`. Tu peux écrire en code multiline @@ -81,7 +81,7 @@ Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables d Tu peux également ajouter une langue pour ton code en écrivant ainsi:
    @@ -97,7 +97,7 @@ Tu trouveras ci-dessous un récapitulatif des différents symboles utilisables d
    Tu peux écrire une date sous forme de "timestamp" (exemple:{' '} 21 March 2022 00:00) en écrivant ta date de cette manière: diff --git a/docs/discord/plus-loin/les-embeds.mdx b/docs/discord/plus-loin/les-embeds.mdx index 7ed043e..7f338b3 100644 --- a/docs/discord/plus-loin/les-embeds.mdx +++ b/docs/discord/plus-loin/les-embeds.mdx @@ -1,12 +1,12 @@ --- -sidebar_position: 3 +sidebar_position: 2 title: Les intégrations --- import Image from '../../../src/components/Image'; import RocketList from '../../../src/components/RocketList'; -Tu l'as sans doute remarqué quand tu postes un lien sur Discord, ou alors quand tu envoies un message contenant une image mais l'entité `message` est composée d'[énormément de choses décrites dans la documentation](https://discordapp.com/developers/docs/resources/channel#message-object). Retenons de cette liste quelques éléments importants : +Tu l'as sans doute remarqué quand tu postes un lien sur Discord, ou alors quand tu envoies un message contenant une image mais l'entité `message` est composée d'[énormément de choses décrites dans la documentation](https://discord.com/developers/docs/resources/channel#message-object). Retenons de cette liste quelques éléments importants :
  • un identifiant
  • @@ -24,25 +24,25 @@ Tu l'as sans doute remarqué quand tu postes un lien sur Discord, ou alors quand > Du verbe anglais "to embed" qui signifie "intégrer", un embed est une intégration visuelle sur un site web, une application, un IRC, etc. Tu l'utilises dans la vie de tous les jours quand, par exemple, tu partages un lien YouTube ou une page du journal de ton école sur Twitter, Facebook ou autre! -Une intégration (un embed), c'est également une entité générée par Discord et qui permet de mettre en avant des ressources de manière plus interactive. En effet, lorsque tu postes un lien YouTube par exemple, une intégration est automatiquement créé afin de pouvoir jouer la vidéo YouTube _depuis l'application Discord_ (sans ouvrir ton navigateur). Elle est _intégrée_ à Discord. Voici la page de la documentation officielle : https://discordapp.com/developers/docs/resources/channel#embed-object. +Une intégration (un embed), c'est également une entité générée par Discord et qui permet de mettre en avant des ressources de manière plus interactive. En effet, lorsque tu postes un lien YouTube par exemple, une intégration est automatiquement créé afin de pouvoir jouer la vidéo YouTube _depuis l'application Discord_ (sans ouvrir ton navigateur). Elle est _intégrée_ à Discord. Voici la page de la documentation officielle : https://discord.com/developers/docs/resources/channel#embed-object. ## Les limitations :::note -Comme toute entité, une intégration est également soumise à des limites. Ces dernières [sont décrites dans la documentation en ligne](https://discordapp.com/developers/docs/resources/channel#embed-limits). +Comme toute entité, une intégration est également soumise à des limites. Ces dernières [sont décrites dans la documentation en ligne](https://discord.com/developers/docs/resources/channel#embed-limits). ::: Outre les limitations de contenu, Discord bloque l'utilisation de certains champs. Protected embed's fields Ces bloquages permettent ainsi à Discord de s'assurer le monopole sur la création de certaines intégrations spécifiques, par exemple celles comprenant des vidéos: YouTube embedded in Discord @@ -51,123 +51,23 @@ Ces bloquages permettent ainsi à Discord de s'assurer le monopole sur la créat Une intégration soit formée de beaucoup d'éléments. Il est donc important de comprendre sa structure JSON afin de comprendre à quel élément affiché correspond chaque paire clé-valeur. Embed Structure -Voici une image et sa légende, expliquant ainsi la structure visuelle d'une intégration Discord : - -Explained Embed Structure - -
      -
    1. - - author, le champ "auteur" composé de: - -
        -
      • - name, le nom de l'auteur -
      • -
      • - url, l'URL à ouvrir en cas de clic -
      • -
      • - icon_url, l'URL de l'icône -
      • -
      -
    2. -
    3. - - thumbnail, le champ "image" affiché comme vignette en - haut à droite composé de: - -
        -
      • - url, le lien vers cette image (automatiquement - redimensionnée) -
      • -
      -
    4. -
    5. - deux champs étroitement liés: -
        -
      • - title, le titre -
      • -
      • - url, l'URL à ouvrir en cas de clic sur le titre -
      • -
      -
    6. -
    7. - description, le contenu de l'intégration -
    8. -
    9. - - fields, le contenu le plus intéressants : les champs. - Ils sont tous composés ainsi: - -
        -
      • - name, le nom du champ -
      • -
      • - value, le contenu du champ -
      • -
      • - inline, un booléen qui le contenu doit être aligné - quand c'est possible (comme les champs 4 et 5) -
      • -
      -
    10. -
    11. - - image, le champ "image" affiché en dessous des champs - de l'intégration et composé de: - -
        -
      • - url, le lien vers cette image (automatiquement - redimensionnée) -
      • -
      -
    12. -
    13. - le bas de page étroitement liés à 2 paires: -
        -
      • - - footer, le bas de page lui-même composé de: - -
          -
        • - icon_url, l'URL de l'icône -
        • -
        • - text, le texte affiché à droite de l'icône -
        • -
        -
      • -
      • - timestamp, l'horodatage en format ISO8601 -
      • -
      -
    14. -
    15. le code couleur en base 16
    16. -
    +Nous conseillons fortement de se rendre sur le [Discord Embed Builder](https://autocode.com/tools/discord/embed-builder/) et de jouer avec les différents champs afin de comprendre leur fonctionnement. :::tip -Si tu as ton code couleur en hexadécimal, nous te conseillons d'utiliser `parseInt` du langage JavaScript pour le mettre en base 10 avant de l'utiliser dans ton intégration. +Tu peux te rendre sur [color-hex](https://www.color-hex.com/) et choisir une couleur depuis leur site web! +Ajoute ensuite `0x` devant le code hexadécimal. C'est une notation qui change la chaîne de caractères écrite en un code hexadécimal 😁 +Tu peux aussi utiliser la fonction `parseInt` et la méthode `.toString(16)` de JavaScript: ```js -> parseInt("995b52", 16) -> 10050386 -``` +const hexadecimalBase = 16; -Tu peux également utiliser [Blargbot](https://blargbot.xyz) et [son système de sous-tag](https://blargbot.xyz/tags#base) afin de transformer ton nombre dans la base de ton choix : - -Blargbot's {base} subtag +const decimalNumber = parseInt('a49d33', hexadecimalBase); // 10788147 +decimalNumber.toString(hexadecimalBase); // 'a49d33' +decimalNumber === 0xa49d33; // true +decimalNumber === 10788147; // true +``` ::: diff --git a/docs/discord/plus-loin/les-identifiants.mdx b/docs/discord/plus-loin/les-identifiants.mdx index 5bfff27..91aba5d 100644 --- a/docs/discord/plus-loin/les-identifiants.mdx +++ b/docs/discord/plus-loin/les-identifiants.mdx @@ -21,7 +21,7 @@ Discord est construit autour de plusieurs entités :
    -Chacune de ces entités est identifiée par un nombre unique appelé "[Snowflake](https://discordapp.com/developers/docs/reference#snowflakes)". Pour récupérer l'ID d'une entité, il faut en général faire un clic droit sur celle-ci et sélectionner "Copier l'id" (sur le client Discord). +Chacune de ces entités est identifiée par un nombre unique appelé "[Snowflake](https://discord.com/developers/docs/reference#snowflakes)". Pour récupérer l'ID d'une entité, il faut en général faire un clic droit sur celle-ci et sélectionner "Copier l'id" (sur le client Discord). Ces identifiants sont très utiles, étant donné qu'ils référencent des entités de manière unique. Ils permettent donc de réaliser des hyper-liens de manière globale à travers Discord (référencer un canal écrit d'une guilde dans une autre, taguer une personne dans un canal auquel elle n'a pas accès, etc.). @@ -34,7 +34,7 @@ Pour aller plus loin dans cette documentation, il est important d'activer le **M 3. Descendre dans les paramètres Avancés et cocher le Mode développeur. Enable Dev Mode @@ -55,19 +55,13 @@ Le contenu de ce tableau [est décrit dans la documentation en ligne](https://di | Emoji personnalisé | Taper l'emoji dans un canal, préfixé du caractère `\` (exemple: `\:trollface:`) puis l'envoyer dans le chat. Le parser de Discord fera ainsi apparaître non pas l'emoji mais son identifiant : `<:trollface:501010468433952770>` | `<:_:ID:>` ou `` s'il s'agit d'un emoji animé | Emoji Mention | | Webhook | Il n'est possible de récupérer l'ID d'un webhook\* qu'à travers l'interface Discord elle-même (dans la liste des webhooks, qui se trouve dans les paramètres du serveur). | | | -Il est possible de créer un lien spécifique avec l'identifiants d'une guilde, d'un canal et d'un message : `https://discordapp.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID`. Ce lien permet ainsi de "sauter" sur le message référencé dans le canal de la guilde. +Il est possible de créer un lien spécifique avec l'identifiants d'une guilde, d'un canal et d'un message : `https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID`. Ce lien permet ainsi de "sauter" sur le message référencé dans le canal de la guilde. Très utile quand on veut retrouver des choses qui sont très haut dans une conversation. - - Message Jump GIF :::tip Il est possible de créer rapidement un tel lien en cliquant sur le message et en appuyant sur "Copier le lien du message". ::: -\*Le lien d'un webhook correspondre au modèle suivant : `https://discordapp.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN`. Plus d'infos à la page suivante! 😉 +\*Le lien d'un webhook correspondre au modèle suivant : `https://discord.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN`. Plus d'infos à la page suivante! 😉 diff --git a/docs/discord/plus-loin/les-webhooks.mdx b/docs/discord/plus-loin/les-webhooks.mdx index 12b55d2..457da4c 100644 --- a/docs/discord/plus-loin/les-webhooks.mdx +++ b/docs/discord/plus-loin/les-webhooks.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 title: Les webhooks --- @@ -7,30 +7,16 @@ import Image from '../../../src/components/Image'; Vivement demandé par la communauté (et surtout les développeurs) il fut un temps, Discord décida d'implémenter le système de webhook. Nous n'allons pas nous embêter à t'expliquer tout sur le webhook, Discord a très bien fait ça. -Lis donc [l'article à ce sujet](https://support.discordapp.com/hc/fr/articles/228383668) ! +Lis donc [l'article à ce sujet](https://support.discord.com/hc/fr/articles/228383668) ! ## Etape 1 : comprendre ce qu'est un webhook Un webhook, c'est comme un tube pneumatique pour faire passer des messages d'un endroit à l'autre. Le premier endroit, ce serait l'**application que tu utilises** pour _envoyer_ le webhook. L'endroit de destination, c'est un **canal écrit Discord**. Le message, bah c'est le **contenu du webhook** (un message texte, [une intégration](les-embeds), ...). Et le tube pneumatique, c'est l'**API de Discord**! -
    - -
    +Futurama Pipeline Pour utiliser un webhook, tu as besoin de deux choses : @@ -42,20 +28,21 @@ Toute entité nécessitant une authentification possède donc un token (les webh Maintenant que c'est dit, passons à la suite. Ces deux choses nécessaires se trouvent dans l'URL fourni par Discord lors de la création du webhook. Lien URL qui ressemble à ce qui suit : ``` -https://discordapp.com/api/webhooks/472492847115927582/-r0SIJM4rOZ5aIrOrgtaPi1z1PByun1LwqcXRDcNH3LOfn3lERlMcJBHdTOgwNDQ5BuM -https://discordapp.com/api/webhooks/ ID / TOKEN +https://discord.com/api/webhooks/472492847115927582/-r0SIJM4rOZ5aIrOrgtaPi1z1PByun1LwqcXRDcNH3LOfn3lERlMcJBHdTOgwNDQ5BuM +https://discord.com/api/webhooks/ ID / TOKEN ``` ## Etape 2 : mettre en place le webhook étape 1 ## Etape 3 : utiliser le webhook pour communiquer -L'API de Discord, majoritairement développée en Python, transmet des données. Ces données sont donc généralement véhiculées à travers un format commun, qu'on appelle le [**J**ava**S**cript **O**bject **N**otation](https://fr.wikipedia.org/wiki/JavaScript_Object_Notation). C'est la représentation en chaîne de caractères d'un objet en Javascript. +L'API de Discord, majoritairement développée en Python, transmet des données. Ces données sont donc généralement véhiculées à travers un format commun, qu'on appelle le [**J**ava**S**cript **O**bject **N**otation](https://fr.wikipedia.org/wiki/JavaScript_Object_Notation). +C'est la représentation en chaîne de caractères d'un objet en Javascript. 1. Pour _construire_ un webhook, nous utilisons un outil de visualisation en ligne (https://leovoel.github.io/embed-visualizer/). @@ -64,9 +51,3 @@ L'API de Discord, majoritairement développée en Python, transmet des données. 2. Pour _envoyer_ un webhook, nous utilisons une application qui permet d'émettre des _requêtes HTTP_. Nous utilisons [Insomnia](https://insomnia.rest/) mais il en existe d'autres, comme [Postman](https://www.getpostman.com) par exemple. -Ci-après un tutoriel rapide avec Insomnia dans lequel nous réalisons une requête HTTP de type "post". En effet, nous envoyons l'objet JSON sur l'URL du webhook, ce dernier gérant le reste (comprendre l'objet reçu, le traduire et ensuite l'afficher dans le canal sous forme d'un message lisible). - -étape 3 diff --git a/src/components/DiscordCard/index.js b/src/components/DiscordCard/index.js index d1998cc..e118c42 100644 --- a/src/components/DiscordCard/index.js +++ b/src/components/DiscordCard/index.js @@ -5,47 +5,47 @@ import Loading from '../Loading'; import fetchDiscordInvite from '../../services/discord.utils'; export default function DiscordCard({ - inviteCode, - title = undefined, - verified = false, - partnered = false, + inviteCode, + title = undefined, + verified = false, + partnered = false }) { - if (!inviteCode) throw new Error('No invite code provided'); + if (!inviteCode) throw new Error('No invite code provided'); - const [loading, setLoading] = useState(true); - const [guildInvite, setGuildInvite] = useState({ - name: '', - icon: '', - url: '', - members: 0, - online: 0, - }); + const [loading, setLoading] = useState(true); + const [guildInvite, setGuildInvite] = useState({ + name: '', + icon: '', + url: '', + members: 0, + online: 0 + }); - useEffect(() => { - fetchDiscordInvite(inviteCode) - .then((data) => { - setGuildInvite({ - name: data.guild.name, - icon: `https://cdn.discordapp.com/icons/${data.guild.id}/${data.guild.icon}.png`, - members: data.approximate_member_count, - online: data.approximate_presence_count, - url: `https://discordapp.com/invite/${inviteCode}`, - }); + useEffect(() => { + fetchDiscordInvite(inviteCode) + .then((data) => { + setGuildInvite({ + name: data.guild.name, + icon: `https://cdn.discord.com/icons/${data.guild.id}/${data.guild.icon}.png`, + members: data.approximate_member_count, + online: data.approximate_presence_count, + url: `https://discord.com/invite/${inviteCode}` + }); - setLoading(false); - }) - .catch(console.warn); - }, []); + setLoading(false); + }) + .catch(console.warn); + }, []); - if (loading) return ; + if (loading) return ; - return ( - - ); + return ( + + ); } diff --git a/src/components/FlagEmoji/index.js b/src/components/FlagEmoji/index.js index 5437c60..0194ee4 100644 --- a/src/components/FlagEmoji/index.js +++ b/src/components/FlagEmoji/index.js @@ -3,10 +3,10 @@ import React from 'react'; import styles from './styles.module.css'; import Img from '../Image'; -const whitelist = ['flag_fr', 'flag_gb']; +const whitelist = ['discord/flag_fr.svg', 'discord/flag_gb.svg']; export default function FlagEmoji({ name }) { - if (!whitelist.includes(name)) name = 'logo'; + if (!whitelist.includes(name)) name = 'logo'; - return {name}; + return {name}; } diff --git a/src/services/discord.utils.js b/src/services/discord.utils.js index 5786148..21f70cb 100644 --- a/src/services/discord.utils.js +++ b/src/services/discord.utils.js @@ -1,18 +1,18 @@ -const endpoint = 'https://discordapp.com/api/v9/invites/'; +const endpoint = 'https://discord.com/api/v9/invites/'; const queryParameters = '?with_counts=true'; const checkStatus = (response) => { - if (response.status >= 200 && response.status < 300) { - return Promise.resolve(response); - } - return Promise.reject(new Error(response.statusText)); + if (response.status >= 200 && response.status < 300) { + return Promise.resolve(response); + } + return Promise.reject(new Error(response.statusText)); }; const toJson = (response) => response.json(); const fetchDiscordInvite = (inviteCode) => - fetch(`${endpoint}${inviteCode}${queryParameters}`) - .then(checkStatus) - .then(toJson); + fetch(`${endpoint}${inviteCode}${queryParameters}`) + .then(checkStatus) + .then(toJson); export default fetchDiscordInvite; diff --git "a/static/img/discord/barr\303\251.png" "b/static/img/discord/barr\303\251.png" deleted file mode 100644 index c8b2c74..0000000 Binary files "a/static/img/discord/barr\303\251.png" and /dev/null differ diff --git a/static/img/discord/citation-block.png b/static/img/discord/citation-block.png deleted file mode 100644 index bda31a5..0000000 Binary files a/static/img/discord/citation-block.png and /dev/null differ diff --git a/static/img/discord/code-block-result.png b/static/img/discord/code-block-result.png deleted file mode 100644 index 82d42ac..0000000 Binary files a/static/img/discord/code-block-result.png and /dev/null differ diff --git a/static/img/discord/code-block.png b/static/img/discord/code-block.png deleted file mode 100644 index 1a55ac9..0000000 Binary files a/static/img/discord/code-block.png and /dev/null differ diff --git a/static/img/discord/code-result.png b/static/img/discord/code-result.png deleted file mode 100644 index a2c6796..0000000 Binary files a/static/img/discord/code-result.png and /dev/null differ diff --git a/static/img/discord/code.png b/static/img/discord/code.png deleted file mode 100644 index 3a1c027..0000000 Binary files a/static/img/discord/code.png and /dev/null differ diff --git a/static/img/discord/colored-code-block-result.png b/static/img/discord/colored-code-block-result.png deleted file mode 100644 index c81dde1..0000000 Binary files a/static/img/discord/colored-code-block-result.png and /dev/null differ diff --git a/static/img/discord/colored-code-block.png b/static/img/discord/colored-code-block.png deleted file mode 100644 index 00f9993..0000000 Binary files a/static/img/discord/colored-code-block.png and /dev/null differ diff --git a/static/img/discord/discord-timestamp.png b/static/img/discord/discord-timestamp.png deleted file mode 100644 index 44b1bb3..0000000 Binary files a/static/img/discord/discord-timestamp.png and /dev/null differ diff --git a/static/img/discord/embed-properties.png b/static/img/discord/embed-properties.png new file mode 100644 index 0000000..ee62a51 Binary files /dev/null and b/static/img/discord/embed-properties.png differ diff --git a/static/img/discord/embed-properties2.png b/static/img/discord/embed-properties2.png new file mode 100644 index 0000000..b2dc663 Binary files /dev/null and b/static/img/discord/embed-properties2.png differ diff --git a/static/img/discord/gras.png b/static/img/discord/gras.png deleted file mode 100644 index 39db19e..0000000 Binary files a/static/img/discord/gras.png and /dev/null differ diff --git a/static/img/discord/hex-to-dec-and-dec-to-hex.jpg b/static/img/discord/hex-to-dec-and-dec-to-hex.jpg new file mode 100644 index 0000000..e98b236 Binary files /dev/null and b/static/img/discord/hex-to-dec-and-dec-to-hex.jpg differ diff --git a/static/img/discord/hunteroi.png b/static/img/discord/hunteroi.png new file mode 100644 index 0000000..35542af Binary files /dev/null and b/static/img/discord/hunteroi.png differ diff --git a/static/img/discord/inline-citation.png b/static/img/discord/inline-citation.png deleted file mode 100644 index 02ab674..0000000 Binary files a/static/img/discord/inline-citation.png and /dev/null differ diff --git a/static/img/discord/italique.png b/static/img/discord/italique.png deleted file mode 100644 index 717013a..0000000 Binary files a/static/img/discord/italique.png and /dev/null differ diff --git "a/static/img/discord/soulign\303\251.png" "b/static/img/discord/soulign\303\251.png" deleted file mode 100644 index 4d75bd4..0000000 Binary files "a/static/img/discord/soulign\303\251.png" and /dev/null differ diff --git a/static/img/discord/spoiler-closed.png b/static/img/discord/spoiler-closed.png deleted file mode 100644 index 1f69b33..0000000 Binary files a/static/img/discord/spoiler-closed.png and /dev/null differ diff --git a/static/img/discord/spoiler-opened.png b/static/img/discord/spoiler-opened.png deleted file mode 100644 index 9dfdb77..0000000 Binary files a/static/img/discord/spoiler-opened.png and /dev/null differ diff --git a/static/img/discord/spoiler.png b/static/img/discord/spoiler.png deleted file mode 100644 index b8ef0e0..0000000 Binary files a/static/img/discord/spoiler.png and /dev/null differ