0
votes

comment envoyer un message à chaque canal de chaque guilde?

similaire à cette question mais je veux pouvoir l'envoyer à tous les canaux auxquels il a accès! dans l'événement on message après que je me sois vérifié par ID et la commande émise que j'utilisais ce code:

      const listedChannels = [];
      msg.guild.channels.forEach(channel => {
      //get all channels
      client.channels.get(channel.id).send("you like bred? (message) ");
      //send a message to every channel in this guild
      });

cependant j'obtiens l'erreur que .send n'est pas une fonction ...

On m'a dit d'utiliser .send après avoir obtenu l'ID des chaînes


0 commentaires

3 Réponses :


0
votes

Si vous parcourez tous les canaux en boucle, vous devez simplement envoyer votre contenu sur le canal, que vous avez déjà obtenu de msg.guild.channels.forEach(channel => {//code}) .

Remplacez ce que vous avez à l'intérieur du bloc .forEach par;

channel.send("You like bred? (message)");

Bien que cela You like bred? (message) enverra You like bred? (message)

Si vous essayez d'obtenir une réponse, regardez peut-être cette réponse qui explique la collecte de réponses via des réactions à un message de discorde.


0 commentaires

0
votes

Vous pouvez utiliser client.channels pour cela. Vérifiez si le type de canal est un canal de texte de guilde, puis essayez d'envoyer un message.

client.channels.forEach(channel => {
    if(channel.type === 'text') channel.send('MSG').catch(console.error)
})


0 commentaires

0
votes

L'explication suivante concerne uniquement la v11 (stable).

Client.channels est une collection de canaux de votre robot regarde. Vous ne pouvez envoyer des messages qu'à des canaux de texte, et cette collection comprendra également des canaux DM. Pour cette raison, nous pouvons utiliser Collection.filter() pour récupérer une nouvelle collection de canaux de texte uniquement au sein d'une guilde. Enfin, vous pouvez parcourir les canaux et appeler TextChannel.send() sur chacun d'eux. Parce que vous avez affaire à Promise s, je vous recommande une Promise.all() / Collection.map() (voir la documentation en hyperlien) .

Par exemple...

// assuming "client" is your Discord Bot

const channels = client.channels.filter(c => c.guild && c.type === 'text');
Promise.all(channels.map(c => c.send('Hello, world!')))
  .then(msgs => console.log(`${msgs.length} successfully sent.`))
  .catch(console.error);


0 commentaires