Создание Discord-бота, используя библиотеку discord.js | Часть №1
- четверг, 25 июня 2020 г. в 00:28:41
npm init
npm install
npm install discord.js
{
"token" : "Ваш_токен",
"prefix" : "Ваш_префикс"
}
const Discord = require('discord.js'); // Подключаем библиотеку discord.js
const robot = new Discord.Client(); // Объявляем, что robot - бот
const comms = require("./comms.js"); // Подключаем файл с командами для бота
const fs = require('fs'); // Подключаем родной модуль файловой системы node.js
let config = require('./config.json'); // Подключаем файл с параметрами и информацией
let token = config.token; // «Вытаскиваем» из него токен
let prefix = config.prefix; // «Вытаскиваем» из него префикс
robot.on("ready", function(){ /* Бот при запуске должен отправить в терминал сообщение «[Имя бота] запустился!» */
console.log(robot.user.username + " запустился!");
});
robot.on('message', (msg) => { // Реагирование на сообщения
if(msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator){
var comm = msg.content.trim()+" ";
var ok = false;
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for(comm_count in comms.comms){
var comm2 = prefix + comms.comms[comm_count].name;
if(comm2 == comm_name){
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});
robot.login(token); // Авторизация бота
const config = require('./config.json'); // Подключаем файл с параметрами и информацией
const Discord = require('discord.js'); // Подключаем библиотеку discord.js
const prefix = config.prefix; // «Вытаскиваем» префикс
// Команды //
function test(robot, mess , args) {
mess.channel.send('Test!')
}
// Список комманд //
var comms_list = [
{name: "test", out: test, about: "Тестовая команда"}
];
// Name - название команды, на которую будет реагировать бот
// Out - название функции с командой
// About - описание команды
module.exports.comms = comms_list;
const config = require('./config.json');
const Discord = require('discord.js');
const prefix = config.prefix;
const versions = config.versions;
// Команды //
function test(robot, mess, args) {
mess.channel.send("Тест!")
}
function hello(robot, mess, args) {
mess.reply("Привет!")
}
// Список комманд //
var comms_list = [
{name: "test", out: test, about: "Тестовая команда"},
{name: "hello", out: hello, about: "Команда для приветствия!"}
}
module.exports.comms = comms_list;
node bot.js
robot.on("ready", function(){
console.log(robot.user.username + " запустился!");
console.log("Ссылка-приглашение") // << //
})
const Discord = require('discord.js');
const robot = new Discord.Client();
var comms = require("./comms.js");
const fs = require('fs');
let config = require('./config.json');
let token = config.token;
let prefix = config.prefix;
robot.on("ready", function(){
console.log(robot.user.username + " запустился!");
console.log("Ссылка-приглашение")
})
robot.on('message', (msg) => {
if(msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator){
var comm = msg.content.trim()+" ";
var ok = false;
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for(comm_count in comms.comms){
var comm2 = prefix + comms.comms[comm_count].name;
if(comm2 == comm_name){
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});
robot.login(token)
robot.login(token);
robot.on("ready", function(){
console.log(robot.user.username + " запустился!");
robot.generateInvite(["ADMINISTRATOR"]).then((link) => { // < //
console.log(link); // < //
})})
const Discord = require('discord.js');
const robot = new Discord.Client();
var comms = require("./comms.js");
const fs = require('fs');
let config = require('./config.json');
let token = config.token;
let prefix = config.prefix;
robot.on("ready", function(){
console.log(robot.user.username + " запустился!");
robot.generateInvite(["ADMINISTRATOR"]).then((link) => {
console.log(link);
})})
robot.on('message', (msg) => {
if(msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator){
var comm = msg.content.trim()+" ";
var ok = false;
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for(comm_count in comms.comms){
var comm2 = prefix + comms.comms[comm_count].name;
if(comm2 == comm_name){
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});
robot.login(token);
robot.generateInvite(['KICK_MEMBERS', 'BAN_MEMBERS', 'SEND_MESSAGES']).then((link) => {
console.log(link);
if(!mess.member.hasPermission("MANAGE_MESSAGES")) return mess.channel.send("У вас нет прав"); /* Если у исполнителя команды нету привилегии MANGAGE_MESSAGES, он не сможет её использовать */
let robotmessage = args = mess.content.split(' '); // Пробелы между словами
args.shift();
args = args.join(' ');
mess.delete().catch(); // Удаление сообщения пользователя после отправки
mess.channel.send(robotmessage).then(mess.channel.send(mess.author)) /* Отправление в чат сообщения бота */
mess.channel.send('Монета подбрасывается...')
var random = Math.floor(Math.random() * 4); // Объявление переменной random - она вычисляет случайное число от 1 до 3
if (random == 1) { // Если вычислено число 1, то выпадает орёл.
mess.channel.send(':full_moon: Орёл!')
} else if (random == 2) { // Если вычислено число 2, то выпадает решка.
mess.channel.send(':new_moon: Решка!')
} else if (random == 3) { // Если вычислено число 3, то монета падает ребром.
mess.channel.send(':last_quarter_moon: Монета упала ребром!')
}
const arggs = mess.content.split(' ').slice(1); // Все аргументы за именем команды с префиксом
const amount = arggs.join(' '); // Количество сообщений, которые должны быть удалены
if (!amount) return mess.channel.send('Вы не указали, сколько сообщений нужно удалить!'); // Проверка, задан ли параметр количества
if (isNaN(amount)) return mess.channel.send('Это не число!'); // Проверка, является ли числом ввод пользователя
if (amount > 100) return mess.channel.send('Вы не можете удалить 100 сообщений за раз'); // Проверка, является ли ввод пользователя числом больше 100
if (amount < 1) return mess.channel.send('Вы должны ввести число больше чем 1'); // Проверка, является ли ввод пользователя числом меньше 1
async function delete_messages() { // Объявление асинхронной функции
await mess.channel.messages.fetch({ limit: amount }).then(messages => {
mess.channel.bulkDelete(messages)
mess.channel.send(`Удалено ${amount} сообщений!`)
})};
delete_messages(); // Вызов асинхронной функции
var name = new Array( // Объявление массива name и занесение в него большого количества имён
'Абрам',' Аваз',' Аввакум',' Август',' Августин',
' Авдей',' Авраам',' Автандил',' Агап',' Агафон',
' Аггей',' Адам',' Адис',' Адольф',' Адриан',
' Азамат',' Айдар',' Айнур',' Айрат',' Аким',
' Алан',' Алей',' Александр',' Алексей',' Али',
' Альберт',' Альфред',' Амадей',' Амадеус',
' Амаяк',' Амвросий',' Ананий',' Анастасий',
' Анатолий',' Анвар',' Ангел',' Андоим',' Андрей',
' Аникита',' Антон',' Арам',' Арий',' Аристарх',
' Аркадий',' Арман',' Арно',' Арнольд',' Арон',' Арсен',
' Арсений',' Арслан',' Артем',' Артемий',' Артур',' Архип'
,' Аскар',' Аскольд',' Аслан',' Афанасий',' Ахмет',' Ашот'
,' Бальтазар',' Бежен',' Бенедикт',' Берек',' Бернард',
' Бертран',' Богдан',' Болеслав',' Борис',' Бронислав',
' Булат',' Вадим',' Валентин',' Валерий',' Вальтер',
' Варфоломей',' Василий',' Вацлав',' Велизар',' Венедикт',' Вениамин',' Викентий',' Виктор',' Вилли',' Вильгельм',' Виссарион',' Виталий',' Витольд',' Владимир',' Владислав',' Владлен',' Володар',' Вольдемар',' Всеволод',' Вячеслав',' Гавриил',' Галактион',' Гарри',' Гастон',' Гаяс',' Гевор',' Геннадий',' Генрих',' Георгий',' Геракл',' Геральд',' Герасим',' Герман',' Глеб',' Гордей',' Гордон',' Горислав',' Градимир',' Григорий',' Гурий',' Густав',' Давид',' Дамир',' Даниил',' Даниэль',' Данияр',' Дарий',' Дементий',' Демид',' Демосфен',' Демьян',' Денис',' Джамал',' Джордан',' Дмитрий',' Добрыня',' Дональд',' Донат',' Дорофей',' Евгений',' Евграф',' Евдоким',' Евсевий',' Евсей',' Евстафий',' Егор',' Елеазар',' Елисей',' Емельян',' Еремей',' Ермолай',' Ерофей',' Ефим',' Ефрем',' Жан',' Ждан',' Жорж',' Захар',' Зиновий',' Ибрагим',' Иван',' Игнатий',' Игорь',' Илларион',' Ильдар',' Ильнар',' Ильнур',' Илья',' Ильяс',' Иннокентий',' Иоанн',' Иосиф',' Ипполит',' Искандер',' Ислам',' Камиль',' Карим',' Карл',' Кирилл',' Клим',' Кондрат',' Константин',' Корней',' Кузьма',' Лавр',' Лаврентий',' Лев',' Леон',' Леонид',' Леонтий',' Леопольд',' Лука',' Лукьян',' Любим',' Макар',' Максим',' Максимилиан',' Марат',' Марк',' Марсель',' Мартин',' Матвей',' Мирон',' Мирослав',' Митрофан',' Михаил',' Михей',' Мишель',' Мстислав',' Мурат',' Муслим',' Назар','Абрам',' Аваз',' Аввакум',' Август',' Августин',' Авдей',' Авраам',' Автандил',' Агап',' Агафон',' Аггей',' Адам',' Адис',' Адольф',' Адриан',' Азамат',' Айдар',' Айнур',' Айрат',' Аким',' Алан',' Алей',' Александр',
' Алексей',' Али',' Альберт',' Альфред',' Амадей',' Амадеус',' Амаяк',' Амвросий',' Ананий',' Анастасий',' Анатолий',' Анвар',' Ангел',' Андоим',' Андрей',' Аникита',' Антон',' Арам',' Арий',' Аристарх',' Аркадий',' Арман',' Арно',' Арнольд',' Арон',' Арсен',' Арсений',' Арслан',' Артем',' Артемий',' Артур',' Архип',' Аскар',' Аскольд',' Аслан',' Афанасий',' Ахмет',' Ашот',' Бальтазар',' Бежен',' Бенедикт',' Берек',' Бернард',' Бертран',' Богдан',' Болеслав',' Борис',' Бронислав',' Булат',' Вадим',' Валентин',' Валерий',' Вальтер',' Варфоломей',' Василий',' Вацлав',' Велизар',' Венедикт',' Вениамин',' Викентий',' Виктор',' Вилли',' Вильгельм',' Виссарион',' Виталий',' Витольд',' Владимир',' Владислав',' Владлен',' Володар',' Вольдемар',' Всеволод',' Вячеслав',' Гавриил',' Галактион',' Гарри',' Гастон',
' Гаяс',' Гевор',' Геннадий',' Генрих',' Георгий',' Геракл',
' Геральд',' Герасим',' Герман',' Глеб',' Гордей',' Гордон',
' Горислав',' Градимир',' Григорий',' Гурий',' Густав',
' Давид',' Дамир',' Даниил',' Даниэль',' Данияр',
' Дарий',' Дементий',' Демид',' Демосфен',
' Демьян',' Денис',' Джамал',' Джордан',' Дмитрий',' Добрыня',
' Дональд',' Донат',' Дорофей',' Евгений',' Евграф',' Евдоким',' Евсевий',' Евсей',' Евстафий',' Егор',' Елеазар',' Елисей',' Емельян',' Еремей',' Ермолай',' Ерофей',' Ефим',' Ефрем',' Жан',' Ждан',' Жорж',' Захар',' Зиновий',' Ибрагим',' Иван',' Игнатий',' Игорь',' Илларион',' Ильдар',' Ильнар',' Ильнур',' Илья',' Ильяс',' Иннокентий',' Иоанн',' Иосиф',' Ипполит',' Искандер',' Ислам',' Камиль',' Карим',' Карл',' Кирилл',' Клим',' Кондрат',' Константин',' Корней',' Кузьма',' Лавр',' Лаврентий',' Лев',' Леон',' Леонид',' Леонтий',' Леопольд',' Лука',' Лукьян',' Любим',' Макар',' Максим',' Максимилиан',' Марат',' Марк',' Марсель',' Мартин',' Матвей',' Мирон',' Мирослав',' Митрофан',' Михаил',' Михей',' Мишель',' Мстислав',' Мурат',
' Муслим',' Назар'
);
var RandElement = name[Math.floor(Math.random()*(name.length))]; // Выбор случайного элемента из массива
mess.channel.send(RandElement) // Отправка сообщения со случайным элементом из массива в чат