Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyer un DM discord

Discord.js

1 juillet 2020 à 18:39:29

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

  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2020 à 18:57:50

Il n'y a personne qui veux m'aider ???
  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2020 à 21:58:43

Hello DarlannBanache 👋

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")
});
});

En espérant avoir pu t’aider ! 😁

  • Partager sur Facebook
  • Partager sur Twitter
3 juillet 2020 à 0:29:00

EDIT: Après relecture de ma proposition, je ne pense pas que mon code résoudra ton problème.

 Ca m'apprendra à ne pas écrire de message à 12:30 ;)

-
Edité par eclairia 3 juillet 2020 à 17:12:49

  • Partager sur Facebook
  • Partager sur Twitter
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
3 juillet 2020 à 8:10:19

Euh ça ne marcheras pas du tout car il y a à nouveau un bot.on donc je vais pas en ouvrir un dans un autre !!!
  • Partager sur Facebook
  • Partager sur Twitter
3 juillet 2020 à 14:14:36

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");
    });
});

En espérant avoir pu t’aider ! 😁

-
Edité par Oom 3 juillet 2020 à 14:15:07

  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2020 à 13:27:03

Bonjour,

messages sortis des spams :)

Pour la prochaine fois, vous pouvez poster sur le sujet Si votre message est considéré comme spam .

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

4 juillet 2020 à 20:10:54

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

  • Partager sur Facebook
  • Partager sur Twitter
20 juin 2023 à 4:41:34 - Message modéré pour le motif suivant : Merci d’utiliser le bouton code pour inséré un code sur le forum


20 juin 2023 à 7:24:03

Bonjour,

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

Déterrage

Citation des 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

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

-
Edité par Lamecarlate 20 juin 2023 à 7:24:27

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)