Here is a Discord.js Bot Tutorial.
For Getting Started you should atleast have a basic knowledge of JavaScript. Basic Knowledge means you should know the basic functions and Syntax's.
First you need to download the latest verison of Node.js after installing, if you want to check if node.js is installed in your computer or not. go to the search bar and type CMD
open it and type node --version
in the terminal it should show you the latest verison which you installed.
Second you need a code editor i recommend you Visual Studio Code, Then after installation open Visual Studio Code and go to Extensions and download the extension of JavaScript.
Go to Discord Developer Portal And click "New Application" And then name your application then click "Create" .Now , Head over to Bot. Click Add Bot, then you customize the name and avatar(If youd like). Now lets get coding.
Make a folder where you want to store all your bot files. Open CMD with that Folder location and type npm init
This will create a package.json
file in your directory.Then open Visual Studio Code with that Directory.then make a file with your main file name, in my case its alpha.js
then type this code
// IMPORT MAIN FILES AND PACKAGES WHICH IS REQUIRED.
const Discord = require('discord.js');
const config = require('./configs/config.json'); // AS YOU SEE YOU HAVE TO MAKE A FOLDER NAMED `configs` AND IN THAT FOLDER MAKE `config.json` FILE. CODE WILL BE GIVEN ABOVE.
const fs = require('fs');
const db = require('quick.db');
const path = require("path");
const client = new Discord.Client();
client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
const { Player } = require('discord-player');
const player = new Player(client);
client.player = player;
client.emotes = require('./configs/emotes.json')
client.filters = require('./configs/filters.json');
["aliases", "commands"].forEach(cmd => client[cmd] = new Discord.Collection());
["console", "command", "event"].forEach(events => require(`./handlers/${events}`)(client));
client.categories = fs.readdirSync('./commands');
// EVENTS
client.on('ready', async() => {
console.log('Alpha Started!');
});
client.login(config.token)
Config File
{
"prefix": "your prefix here",
"dev": "736977089307345004", // DEVELOEPRS ID HERE
"token": "bot token here"
}
command.js // READ FILES INSIDE COMMANDS FOLDER
const fs = require('fs');
module.exports = (client) => {
const load = dirs => {
const commands = fs.readdirSync(`./commands/${dirs}/`).filter(cmd => cmd.endsWith('.js'));
for (let cmd of commands) {
let pull = require(`../commands/${dirs}/${cmd}`);
client.commands.set(pull.config.name, pull);
if (pull.config.aliases) pull.config.aliases.forEach(cmd => client.aliases.set(cmd, pull.config.name));
};
};
["Folder Names Inside Commands folder"].forEach(cmd => load(cmd));
};
event.js // READ EVENT FILES
const fs = require('fs');
module.exports = (client) => {
const load = dirs => {
const events = fs.readdirSync(`./events/${dirs}`).filter(events => events.endsWith('.js'));
for (let file of events) {
const events = require(`../events/${dirs}/${file}`);
let eventName = file.split('.')[0];
client.on(eventName, events.bind(null,client));
};
};
['client', 'guild'].forEach(events => load(events));
};
let totalUsers = client.guilds.cache.reduce((users , value) => users + value.memberCount, 0);
let totalGuilds = client.guilds.cache.size
let totalChannels = client.channels.cache.size
client.user.setPresence({ activity: { name: `${totalUsers} Users | ${totalGuilds} Servers | ${totalChannels} Channels`, type: "PLAYING" }, status: "online" });
const Discord = require('discord.js');
const config = require('../../configs/config.json');
module.exports = {
config: {
name: '',
description: '',
aliases: [""],
usage: '',
accessableby: "",
},
run: async (client, message, args) => {
// PROCESSING CODE HERE
}
}
var chatbot = new alexa("chat bot api"); //YOUR CHATBOT API HERE
client.on("message", async message => {
let sChannel = db.fetch(`chatbot_${message.guild.id}`);
if (sChannel === null) {
return;
}
if (message.author.bot && message.author.discriminator !== '0000') return;
if(message.channel.id === sChannel){
let content = message.content;
if(!content) return;
chatbot.getReply(content).then(r => client.channels.cache.get(sChannel).send(r));
}
});