Confused Newbie
Confused Newbie

Reputation: 29

message.guild.channels.find is not a function

people of the internet! I am quite new to programming and I am trying to work on a Discord bot as a means of learning.

I am trying to find a channel by name and send a message to it after kicking a member (it's a kick command). The error I am getting is message.guild.channels.find is not a function.

I am not sure what to do here, and I am unable to get it to work for some reason.

 if (cmd === prefix + "kick") {
    let kUser = message.guild.member(
      message.mentions.users.first() || message.guild.member.length(args[0])
    );
    if (!kUser) return message.channel.send("Can't find user!");
    let kReason = args.join(" ").slice(22);
    if (!message.member.hasPermission("MANAGE_MESSAGES"))
      return message.channel.send("No can do pal!");
    if (kUser.hasPermission("MANAGE_MESSAGES"))
      return message.channel.send("That person can't be kicked");

    let kickEmbed = new Discord.MessageEmbed()
      .setDescription("Kick")
      .setColor("#f418")
      .addField("Kicked User" + kUser + "With ID" + kUser.id)
      .addField(
        "Kicked By",
        "<@" + message.author.id + ">" + "With ID : " + message.author.id
      )
      .addField("Time", message.createdAt)
      .addField("Reason", kReason);

    let kickChannel = message.guild.channels.find(channel => channel.name === "logs");
    if (!kickChannel) return message.channel.send("Can't find logs channel.");

    message.guild.member(kUser).kick(kReason);

    // kickChannel.send(kickEmbed);

    return;
  }

Thank you in advance!

Upvotes: 1

Views: 480

Answers (1)

Syntle
Syntle

Reputation: 5174

Since discord.js v12 you need to access the channels collection using cache so your solution would be:

let kickChannel = message.guild.channels.cache.find(channel => channel.name === "logs");

Upvotes: 1

Related Questions