discord.js : message.reply ne semble pas fonctionner

L'événement message n'est pas appelé ?

Le problème exposé dans ce sujet a été résolu.

Bonjour, je suis nouveau dans le codage de boot et je bloque déja sur l’exécution d’une simple commande msg.reply!

pourriez vous m’éclairer?

voici mon code =>

var Discord = require("discord.js");
var Client = new Discord.Client({intents: []});

Client.on("ready", () => {
    console.log("Bot opérationel, en ligne et prêt à être codé!");
});

Client.on("message", msg => {
    if (message.content === 'ping'){
            message.reply('pong');
    }
  });

Client.login("ICI est le Token");

J’ai parcouru enormémént de forum et tuto mais ca marche pas, mon bot est bisible et en ligne sur serveur discord mais il ne répond pas :/


@Amaury — Titre plus clair.

+0 -0

Salut !

Cela peut dépendre de la façon dont l’application Discord qui fait tourner le bot (i.e. comment tu as enregistré le bot côté Discord, sur le Discord Developer Portal) est configurée.

Je soupçonne très fort qu’ici, le problème n’est pas que message.reply ne fonctionne pas, mais plutôt que l’événement message n’est jamais appelé, du tout.

Depuis quelques temps, par défaut, un bot n’a pas accès à tous les messages pour limiter la capacité d’un bot à enregistrer tout ce qu’il voit passer (vie privée, tout ça). L’implication concrète, c’est que Discord ne prévient pas les bots qu’un message a été envoyé (sauf pour les messages où le bot est mentionné), et donc l’événement message n’est jamais reçu. Il faut activer une option (un intent) pour le recevoir, le Message Content Intent, en allant dans la configuration de l’application de ton bot, puis le menu Bot à gauche, puis un peu en bas.

Capture d'écran du panneau de configuration d'un bot Discord. “MESSAGE CONTENT INTENT. Required for your bot to receive message content in most messages. NOTE: Once your bot reaches 100 or more servers, this will require verification and approval. Read more here.”

Cela dit, il n’est pas forcément une bonne pratique que de sauter à pieds joints vers l’activation de cet intent. Cela dépend de ce que tu veux faire précisément, bien sûr. Mais la vieille méthode de lire le chat pour réagir à un message qui a un certain format est vouée à être de plus en plus bloquée. On en voit déjà les prémices sur la capture d’écran plus haut : dés qu’un bot est dans plus d’une centaine de serveurs, Discord bloque par défaut cette possibilité pour vérifier quel usage en est fait. Et, si tu demandes l’accès complet aux messages pour faire des commandes à l’ancienne, c’est systématiquement refusé. Enfin, la tendance est à restreindre de plus en plus cet accès, et je ne serais pas surpris qu’à terme, une demande d’accès argumentée soit nécessaire quelque soit le nombre de serveurs sur lequel le bot est.

Ainsi, si le but est de répondre à des commandes pour faire des actions, la bonne pratique est d’utiliser les commandes natives de Discord. Elles sont faites pour ça, sont plus claires pour les utilisateurs (car suggérées quand on tape /, expliquées en temps réel…), et stables dans le temps.

Vu que tu utilises discord.js, je te donne leur guide pour créer des commandes natives (aussi appelées slash commands). :)

+3 -0

Bonjour à tous ;)

J’ai un peu avancé depuis hier, mais ça ne fonctionne toujours pas, c’est à se tirer les cheveux :(

je vous explique où j’en suis, je me suis rendu sur Discord.js Guide et ai suivi minutieusement chaque étape :p

N’ayant toujours aucun résultat, je me suis dit que j’avais loupé une étape et ai donc téléchargé les fichiers exemple sur Gituhb et ai juste modifié le fichier config.json avec mes propres configurations =>

  • clientId
  • guildId
  • token

Là en principe ca ne peut que fonctionner! :-°

Et bhein noooooon! o_O

Je ne sais plus quoi faire je suis complètement perdu! :'(

Je ne vois qu’une fine marge d’erreur possible, soit c’est dans mon fichier config.json, soit c’est dans les droit que je donne à mon Bot! :euh:

Je vais vous faire des print de tout ca, ce serait top si vous saviez éclairer ma route, je sais que j’y suis presque!

pour commencer, mon bot est bien visible et actif sur mon serveur Image utilisateur

c’est déjà une bonne nouvelle! :p

Concernant le Fichier Config.json que voici =>

{
	"clientId": "xxx",
	"guildId": "xxx",
	"token": "xxx"
}

j’ai trouvé les infos pour le remplir ici

clientId

clientId
clientId

guildId

guildId
guildId

Concernant le token, bhein vu que le bot apparait en ligne, on sait qu’il est bon! :soleil:

Bon nous sommes d’accord, ça ne peut qu’être bon!

Le problème doit venir des permissions alors … mais là encore je ne vois pas ce qui est mal fait!

permission1
permission1
permission2
permission2

Je l’ai mis administrateur histoire d’être sur que tout soit cochés!

voila où j’en suis! C’est à se tirer les cheveux! :(

Vous auriez une idée pour moi?

Je me permets de m’assurer que tu as vu ma réponse juste au dessus de la tienne, car j’ai posté quasiment en même temps que toi :)

Oh, et : la mare de cases à cocher ne sont qu’un outil pour calculer des identifiants de permissions. Cocher Administrateur ne va rien faire sinon te dire qu’il faut utiliser le nombre 8 pour représenter la permission administrateur ^^ .

+1 -0

Bonjour Amaury ;()

Grand grand merci pour ta réponse, en effet celle-ci ce sont croisées!

j’ai du attendre 15 min avant de pouvoir écrire ce message ^^

J’ai bien pris note que je devais activé Message Content Intent et je viens de le faire! ^^ permission3

Merci pour ça! ;) Ca fait un pas de plus de fais! mais toujours sans résultat!

Pour te mettre dans le contexte de mes attentes de ce bot, le serveur discord est un guide complet dédié à un jeux avec des fiches héros et des armes!

Ce que j’aimerais faire c’est que quand un utilisateur tape le nom du héro dans le t’chat, le bot ouvre une commande et affiche la fiche complète de ce héro! :lol:

Oh, et : la mare de cases à cocher ne sont qu’un outil pour calculer des identifiants de permissions. Cocher Administrateur ne va rien faire sinon te dire qu’il faut utiliser le nombre 8 pour représenter la permission administrateur ^^ . Ca j’ai pas compris donc mon bot n’a aucune permission? o_O

j’ai essayé comme tu m’as suggéré de mettre / avant ping et …. c’est un autre bot qui a interagi! :waw:

ping
ping

j’ai donc modifié mon fichier de commande en mettant pingu :lol:

const { SlashCommandBuilder } = require('discord.js');

module.exports = {
	data: new SlashCommandBuilder()
		.setName('pingu')
		.setDescription('Replies with Pong!'),
	async execute(interaction) {
		return interaction.reply('Pong!');
	},
};

Mais toujours rien!

j’ai également essayé de mettre dans ce fichier la / avant pingu mais j’ai une erreur lors de l’exécution! >_<

Je sais que j’avance et je t’en remercie … tu a une idée du comment du pourquoi?

Youpiiiiiiiiiii :soleil:

Merci merci Amaury ;)

Ca n’a pas fonctionné avec pingu mais ca a fonctionné avec ping!

yes
yes

Tu m’as super aider concernant les permissions :p

voici ou j’ai modifier

permission4
permission4

après avoir mis l’url générée dans mon navigateur, ca FONCTIONNE! :)

Cool! bon après, j’ai du mettre le bot admin, ce qui ne me convient pas mais je sais à présent que le code est bon, je vais faire quelque test et créer une autre commande afin de métriser cette base!

Je te remercie encore! <3 :)

Effectivement, les permissions dans l’onglet OAuth2 ce sont les réelles permissions demandées par le bot, là ça ça un effet (contrairement à celles dans l’onglet Bot, qui ne sont qu’une aide au calcul).

Heureux d’avoir pu aider :) .

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte