Josh Bowker
Josh Bowker

Reputation: 11

Way to check if a channel exists

module.exports.run = async (bot, message, args) => {

    let ticketreason = args[1];
    let ticketname = "ticket" + ticketreason;

    message.guild.createChannel("tickets",  "category")
    message.guild.createChannel(ticketname, "text");

}

So I've got this very simple and basic code here. I am trying to find a way to check if a channel exists before creating it. I've attempted to search around the discord.js documentation a few times for a solution, but I've had no luck so far. I need an explanation for how I can achieve this.

Upvotes: 1

Views: 18079

Answers (3)

Rako Games
Rako Games

Reputation: 9

You can do this by checking for the id. While this might not resolve this particular issue, it might help others with a similar issue.:


var chan_id;

if(message.guild.channels.cache.get(chan_id) === undefined)  { 
    //checks if the channel doesn't exist
    //put the action to take here
} 
//continue your code here

Upvotes: 0

Alberto Linde
Alberto Linde

Reputation: 85

I do it in the following way, and I go through each of the channels.

let nameOfChannel = "lista-" + message.author.username.toLowerCase();

        // Check if channel exist
        if ((message.guild.channels.cache.find(c => c.name.toLowerCase() === nameOfChannel))) {

---- code continue here----

Upvotes: 0

newbie
newbie

Reputation: 1571

You can use <Guild>.channels, which returns a collection of GuildChannels, from this collection you can use <Colection>.exists() to check if the channel already exists in the guild.

So something like this:

if (message.guild.channels.exists('name', ticketname)) { //checks if there in an item in the channels collection that corresponds with the supplied parameters, returns a boolean
    message.reply(`The ${ticketname} channel already exists in this guild.`).catch(console.error);
    return; //prevents the rest of the code from being executed
}

// Code that creates the channel {ticketname}...

Upvotes: 2

Related Questions