Проблемы с приветственным сообщением | Discord.js

#javascript #discord #discord.js

#JavaScript #Discord #discord.js

Вопрос:

У меня есть бот с приветственным сообщением, который отправляет приветственное сообщение каждый раз, когда кто-то присоединяется, но иногда он выдает ошибку в консоли со словами:

     member.guild.channels.cache.find(ch => ch.name === "・𝘪𝘮𝘴𝘨").send(exampleEmbed).catch(e => co    nsole.error(`Welcome Error in ${message.guild.name}`) | message.channel.send("__**ERROR:**__ ** Someone joined the server but I was 
le to catch it.**"));
                                                                   ^

TypeError: Cannot read property 'send' of undefined
  

Код:

 client.on('guildMemberAdd', member => {


    const exampleEmbed = new Discord.MessageEmbed()
        .setColor('RANDOM')
        .setTitle(`Welcome to lovell <$, **${member.user.username}**`)
        .setImage('https://images-ext-1.discordapp.net/external/Gy-micqoX7qrlivnytbmFgfTbxPx_CSvgChFLE3qC7g/https/media.discordapp.net/attachments/755425128635957348/758525058934767617/HaxzUWa46sK5CXKzIR.gif')
        .setFooter('Boost Us');

    member.guild.channels.cache.find(ch => ch.name === "・𝘪𝘮𝘴𝘨").send(exampleEmbed).catch(e => console.error(`Welcome Error in ${message.guild.name}`) | message.channel.send("__**ERROR:**__ ** Someone joined the server but I was unable to catch it.**"));
})
  

Как бы мне это исправить?

Ответ №1:

Существует гораздо более простой способ сделать то, что вы пытаетесь сделать. Скопируйте идентификатор этого канала, а затем получите канал в своем коде следующим образом:

 bot.on('guildMemberAdd', (member) => {
    const channel = member.guild.channels.cache.get('channel-id');
    channel.send('Welcome');
});
  

Ответ №2:

Я предполагаю, что если канал не найден, возникает эта ошибка. Канал, который не был найден, вернет undefined. Этот код с веб-сайта DiscordJS проверит, существует ли канал, и если это не так, он не будет запускать остальную часть функции.

Комментарии:

1. Могу ли я просто указать идентификатор канала?

Ответ №3:

Может быть, попробовать это?:

 client.on('guildMemberAdd', member => {
    
    let welChannel = member.guild.channels.cache.find(ch => ch.name === "・𝘪𝘮𝘴𝘨")

    const exampleEmbed = new Discord.MessageEmbed()
        .setColor('RANDOM')
        .setTitle(`Welcome to lovell <$, **${member.user.username}**`)
        .setImage('https://images-ext-1.discordapp.net/external/Gy-micqoX7qrlivnytbmFgfTbxPx_CSvgChFLE3qC7g/https/media.discordapp.net/attachments/755425128635957348/758525058934767617/HaxzUWa46sK5CXKzIR.gif')
        .setFooter('Boost Us');

    welChannel.send(exampleEmbed).catch(e => console.error(`Welcome Error in ${message.guild.name}`) | message.channel.send("__**ERROR:**__ ** Someone joined the server but I was unable to catch it.**"));
})
  

Если это не работает, возможно, бот не может найти ・𝘪𝘮𝘴𝘨 канал.