DarkieBot
DarkieBot

Reputation: 13

How to get the specific discord bot channel with channelid?

My bot returns undefined when using bot.channels.get(channelid).

Here's a sample of my code:

//this is executed in a guild with id 416809320513011713
const Discordjs = require("discord.js");
const bot = new Discordjs.Client();
const auth = require('./auth.json');
const FileSys = require("fs");

bot.on('messageDelete', async function (message) {
  console.log('message deleted')
  let currentguildsettings = JSON.parse(FileSys.readFileSync('./DatStore/GuildDat/' + message.guild.id + '.dat', 'UTF8'));
  if (currentguildsettings[0] == 1) {
    if (currentguildsettings[1] != 0) {
      let channelid = currentguildsettings[1].toString()
      let channel = bot.channels.get(channelid);
      console.log('settings on true, channelid ' + channelid)
      if (channel) {
        console.log('channel found')
      }
    }
  }
}

bot.login(auth.token)

file ./DatStore/GuildDat/416809320513011713.dat contains:

[1,424085503361417200,0]

Here's the output:

message deleted
settings on true, channelid 424085503361417200

If the channel was found it should've logged 'channel found' in the output.

What should I change to make it return the channel?

Upvotes: 1

Views: 302

Answers (2)

DarkieBot
DarkieBot

Reputation: 13

The channel wasn't available since I used the wrong id:

I saved the id's at my server settings command in int format instead of string, parseInt() broke the exact number.

if (logchannelaction == 'set') {
  if (currentguildsettings[1] == message.channel.id) return message.reply("logchannel was already set to this channel");
  currentguildsettings[1] = parseInt(message.channel.id);
  message.reply("logchannel has set to #" + message.channel.name);
  if (currentguildsettings[0] == 0) {
    currentguildsettings[0] = 1
    message.reply("logchannel has automatically enabled");
  }
  FileSys.writeFileSync(guilddatpath, JSON.stringify(currentguildsettings));
  return
}

Thank you for trying to help me.

Upvotes: 0

Tarazed
Tarazed

Reputation: 2675

The channel id key is a string, you must enclose it as a string in your array.

let c1 = bot.channels.get(424085503361417200); // Will produce undefined
let c2 = bot.channels.get('424085503361417200'); // Will produce a channel object (if available)

Upvotes: 2

Related Questions