Bonjour, j'ai essayé d'envoyer un dm à TOUS les membres de mon serveur discord via discord.js
J'ai essayé ce code :
const Discord = require('discord.js');
const bot = new Discord.Client ();
bot.on('ready', user => {
console.log ("Je suis prêt");
})
bot.on('message', message => {
if(message.content === 'ping'){
bot.user.createDM().then(channel => {
channel.send ("Worlds !");
})
.catch(channel => {
console.log("Il y a un problème dans le code !!!! \n", console.error );
})
};
});
bot.login('MON TOKEN');
Mais il me sort cette erreur :
DiscordAPIError: Cannot send messages to this user
at RequestHandler.execute (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
method: 'post',
path: '/users/699979951696511048/channels',
code: 50007,
httpStatus: 400
que je comprends mais que je n'arrive pas à résoudre !
Pouvez vous m'aider avec mon code ?
Cordialement D.Banache
- Edité par DarlannBanache 1 juillet 2020 à 19:12:46
Pour envoyer un message à quelqu’un avec discord.js, il suffit d’utiliser la méthode send() sur un objet GuildMember. Tu peux récupérer la liste de tous les membres sur ton serveur à partir de l’objet Message comme ceci : message.channel.guild.members.cache De là, tu peux très facilement faire une boucle pour envoyer un message à chacun des utilisateurs 🙂
Pense à vérifier que le "channel type" du message correspond bien à text, sinon ce n'est pas un serveur, il n'y a donc pas de liste de membres et ton script va planter. Les bots ne peuvent pas non plus s’envoyer de messages entre deux, donc n’oublie pas de rajouter une petite condition dans ton script pour ignorer les autres bots.
bot.on("message", message => {
// Vérifier que le message a été publié sur un serveur, sinon le bot ne pourra pas accéder à la liste des membres if (message.channel.type !== "text") return; // Récupérer la liste des membres const members = message.channel.guild.members.cache; members.forEach(member => { // Si le membre est un bot, l’ignorer if (member.user.bot) return; // Envoyer le message au membre member.send("Ton emssage") }); });
Hello DarlannBanache 👋 Je t’ai répondu hier soir, mais mon message a été détecté comme un spam 😕
Pour envoyer un message à quelqu’un avec discord.js, il suffit d’utiliser la méthode send() sur un objet GuildMember. Tu peux récupérer la liste de tous les membres sur ton serveur à partir de l’objet Message comme ceci : message.channel.guild.members.cache De là, tu peux très facilement faire une boucle pour envoyer un message à chacun des utilisateurs 🙂
Pense à vérifier que le "channel type" du message correspond bien à text, sinon ce n'est pas un serveur, il n'y a donc pas de liste de membres et ton script va planter. Les bots ne peuvent pas non plus s’envoyer de message entre deux, donc n’oublie pas de rajouter une petite condition dans ton script pour ignorer les autres bots.
bot.on("message", message => {
// Vérifier que le message a été publié sur un serveur, sinon le bot ne pourra pas accéder à la liste des membres
if (message.channel.type !== "text") return;
// Récupérer la liste des membres
const members = message.channel.guild.members.cache;
members.forEach(member => {
// Si le membre est un bot, l’ignorer
if (member.user.bot) return;
// Envoyer le message au membre
member.send("Ton message");
});
});
Bonjour, désolé du retard, alors merci Oom je vais essayé
EDIT : J'ai essayé ça marche quasiment bien, il envoie le MP à certain mais pas tous, il me sort cette erreur
Cannot read property 'members' of undefined
at Client.<anonymous> (/Users/darlannbanache/Downloads/Bot/index.js:14:43)
at Client.emit (events.js:310:20)
at MessageCreateAction.handle (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
at WebSocketShard.onPacket (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
at WebSocketShard.onMessage (/Users/darlannbanache/Downloads/Bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
at WebSocket.onMessage (/Users/darlannbanache/Downloads/Bot/node_modules/ws/lib/event-target.js:125:16)
at WebSocket.emit (events.js:310:20)
at Receiver.receiverOnMessage (/Users/darlannbanache/Downloads/Bot/node_modules/ws/lib/websocket.js:800:20)
Cordialement D.Banache
- Edité par DarlannBanache 5 juillet 2020 à 9:09:08
Depuis le temps, on espère que DarlannBanache a trouvé la solution
Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)