Reputation: 9
Recently, I've been working on a bot called Music Bot. And, it showed up with this error message:
C:\Users\yuhao\Desktop\discord-bot-master\index.js:51
client.login(token);
^
ReferenceError: token is not defined
at Object.<anonymous> (C:\Users\yuhao\Desktop\discord-bot-master\index.js:51:14)
at Module._compile (internal/modules/cjs/loader.js:1144:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1164:10)
at Module.load (internal/modules/cjs/loader.js:993:32)
at Function.Module._load (internal/modules/cjs/loader.js:892:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
C:\Users\yuhao\Desktop\discord-bot-master>
My token format have lots of dots, but, at ReferenceError, it showed up with no dots and the one before the dot.
This the the script for index.js:
const fs = require('fs')
const Discord = require('discord.js');
const Client = require('./client/Client');
const {
prefix,
token,
} = require('./config.json');
const client = new Client();
client.commands = new Discord.Collection();
const queue = new Map();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
console.log(client.commands);
client.once('ready', () => {
console.log('Ready!');
});
client.once('reconnecting', () => {
console.log('Reconnecting!');
});
client.once('disconnect', () => {
console.log('Disconnect!');
});
client.on('message', async message => {
const args = message.content.slice(prefix.length).split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName);
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
try {
command.execute(message);
} catch (error) {
console.error(error);
message.reply('There was an error trying to execute that command!');
}
});
client.login(token);
And this is config.json:
{
"prefix": "!",
"token": "token"
}
Thats all. Help me please on reply section, thx!
Upvotes: 1
Views: 3046
Reputation: 6213
Your problem is that you haven't populated your token or prefix. You need to parse your JSON like this for the object in question to be populated.
JS:
const fs = require('fs')
...
const config = JSON.parse(fs.readFileSync(filename, "UTF-8");
client.login(config.token);
TS (with a class so you don't have to worry about mistyping values, as you will get autocompletion):
export default class Settings {
public token: String;
public prefix: String;
}
...
const config: Settings = JSON.parse(fs.readFileSync(filename, "UTF-8");
client.login(config.token);
Upvotes: 1
Reputation: 2722
use like this
const fs = require('fs')
const Discord = require('discord.js');
const Client = require('./client/Client');
const config = require('./config.json');
const client = new Client();
client.commands = new Discord.Collection();
const queue = new Map();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
console.log(client.commands);
client.once('ready', () => {
console.log('Ready!');
});
client.once('reconnecting', () => {
console.log('Reconnecting!');
});
client.once('disconnect', () => {
console.log('Disconnect!');
});
client.on('message', async message => {
const args = message.content.slice(config.prefix.length).split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName);
if (message.author.bot) return;
if (!message.content.startsWith(config.prefix)) return;
try {
command.execute(message);
} catch (error) {
console.error(error);
message.reply('There was an error trying to execute that command!');
}
});
client.login(config.token);
Upvotes: 0