Home > database >  Sending message into all servers where bot is
Sending message into all servers where bot is

Time:10-11

I'm curious, how to send just one message per one guild where my bot is? It doesn't matter which channel is it, but i don't know how to write it up in my code.

I finally came up with that idea:

client.guilds.cache.forEach(guild => { 
            const Embed = new discord.MessageEmbed();
            const Channels = guild.channels.cache.map(channel => `${channel.id} | ${channel.name}`).join(", ")
    
            Embed.setTitle(`Channels for ${guild.name}`);
            Embed.setDescription(Channels);
    
            message.channel.send(Embed); 
        });

but it dosn't work.

i'm working with command handler so it has to be done with module.exports thing:


module.exports = {
  name: "informacja",
  aliases: [],
  description: "informacja",
  async execute(message) {
    client.guilds.cache.forEach(guild => { 
            const Embed = new discord.MessageEmbed();
            const Channels = guild.channels.cache.map(channel => `${channel.id} | ${channel.name}`).join(", ")
    
            Embed.setTitle(`Channels for ${guild.name}`);
            Embed.setDescription(Channels);
    
            message.channel.send(Embed); 
        });
};

nothing is working, please! i need help!

when i run the code, nothing happens, any error, any message, just nothing.

tried to logged everything, but still nothing came up.

i remind: i want to send one message to all servers where my bot is

CodePudding user response:

This is a very simple boilerplate to start with, you can later check channel with id, or smth like that

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

CodePudding user response:

You could find a channel on each server where the client can send a message then send:

client.guilds.cache.forEach(guild => {
    const channel = guild.channels.cache.find(c => c.type === 'text' && c.permissionFor(client.user.id).has('SEND_MESSAGES')) 
    if(channel) channel.send('MSG')
       .then(() => console.log('Sent on '   channel.name))
       .catch(console.error)
    else console.log('On guild '   guild.name   ' I could not find a channel where I can type.')

})

CodePudding user response:

v13 code

const Discord = require('discord.js')
const {
  MessageEmbed
} = require('discord.js')
const fs = require('fs')

module.exports = {
  name: "send",
  description: "Send message to all guilds bot joined",
  usage: `!send <text>`,
  category: "dev",
  run: async (client, message, args) => {
client.guilds.cache.map((guild) => { 
const channel = guild.channels.cache.find(
    (c) => c.type === "GUILD_TEXT" && c.permissionsFor(guild.me).has("SEND_MESSAGES")
  );
  channel.send('your_text')
})
}}

v12 code

const Discord = require('discord.js')
const {
  MessageEmbed
} = require('discord.js')
const fs = require('fs')

module.exports = {
  name: "send",
  description: "Send message to all guilds bot joined",
  usage: `!send <text>`,
  category: "dev",
  run: async (client, message, args) => {
client.guilds.cache.map((guild) => { 
const channel = guild.channels.cache.find(
    (c) => c.type === "text" && c.permissionsFor(guild.me).has("SEND_MESSAGES")
  );
  channel.send('your_text')
})
}}
  • Related