Как написать своего бота для дискорда

Время на прочтение
12 мин

Количество просмотров 152K

Введение

В этой статье я подробно расскажу о том, как работать с библиотекой discord.js, создать своего Discord-бота, а также покажу несколько интересных и полезных команд.

Сразу хочу отметить, что я планирую сделать ряд подобных статей, начиная с простых команд, заканчивая музыкой, системой экономики и распознаванием голоса ботом.

Начало работы

Если вы уже знакомы с приведёнными ниже материалами, — смело можете пролистать этот раздел.

Установка среды разработки

Для начала работы с кодом нам нужно установить среду разработки, это может быть:

  • Sublime Text
  • Notepad++
  • Atom
  • Brackets
  • InteliJ Idea
  • Eclipse
  • Visual Studio Code

… и так далее.

Среда разработки выбирается по удобству использования и практичности, она у вас может быть любая, но мы рассмотрим её на примере Visual Studio Code, так как она является одной из самых приемлемых для новичков, а также для опытных программистов.

Для установки переходим по этой ссылке.


Выбираем свою операционную систему и запускаем скачивание.

Установка среды выполнения

Для создания бота мы используем среду выполнения node.js. Для её установки нам необходимо перейти на этот сайт.

На данный момент нас интересует версия долгосрочной поддержки (LTS), скачиваем её.

Установка полезных расширений

В Visual Studio Code присутствует возможность устанавливать расширения.
Для этого, кликните по отмеченной ниже иконке.

В открывшемся окне вписываем название название/идентификатор нужного нам расширения, после чего устанавливаем его.

Из полезных расширений могу отметить:

  1. Discord Presence — расширение, позволяющее отображать рабочую область и файл, в котором вы работаете в вашей игровой активности (функция работает только при использовании приложения Discord).

    Идентификатор расширения: icrawl.discord-vscode

  2. Code runner — расширение, с помощью которого предоставляется возможность запускать определённые фрагменты кода.
    Идентификатор расширения: formulahendry.code-runner

Создание бота

Теперь, когда вы установили все нужные компоненты, мы можем приступить к созданию самого бота.

Здесь всё просто. Переходим на портал разработчиков и нажимаем на кнопку с надписью «New Application» — она находится в правом верхнем углу.

В открывшемся окне вписываем имя бота, после чего, нажимаем на кнопку с надписью «Create».

На этой странице мы можем изменить имя бота, загрузить для него иконку, заполнить описание.

Теперь наша задача — воплотить бота в жизнь. Для этого переходим во вкладку «Bot».

Нажимаем на кнопку с надписью «Add Bot» и воплощаем бота в жизнь.

Поздравляю! Вы создали аккаунт для вашего бота. Теперь у него есть тег, токен, ник и иконка.

Подготовка к написанию кода

После создания аккаунта для бота, мы должны установить нужные пакеты и модули, чтобы в дальнейшем он корректно работал.

Первым делом создаём папку, после чего открываем её в VS Code (Файл > Открыть папку) / (Ctrl + K Ctrl + O)

Далее нам нужно открыть терминал (Терминал > Создать терминал) / (Ctrl + Shift + `)

Теперь мы должны создать файл с неким «описанием» нашего бота, сделаем это через терминал.

Вписываем данную строку в терминал и нажимаем Enter:

npm init

После каждой появившейся строки нажимаем Enter или вписываем свои значения.
Значения в этом файле можно будет изменить в любой момент.

Далее, мы должны поочерёдно вводить в терминал эти строки:

npm install

npm install discord.js

«Install» также можно сокращать в «I», но необязательно.

Итого, если вы следовали инструкциям и всё сделали правильно, в вашей папке должны были появиться 3 объекта:

Написание кода

Об удобстве написания кода

Для того, чтобы наш бот появился в сети и мог реагировать на команды, нам нужно написать для него код.

Существует множество вариантов для его написания: используя один файл, два, несколько, и т.д

Мы рассмотрим вариант с двумя файлами, так как его использовать очень легко и удобно, но у каждого варианта есть свои недостатки — например, у этого недостатком является сложность в написании начального кода.

Но не волнуйтесь, весь код вам писать не придётся.

О хранении данных

Для начала, нам нужно где-то хранить основные параметры и информацию о боте.

Мы можем сделать это двумя способами:

  1. Создать отдельный файл
  2. Записать всё в константы

Я не советую вам использовать второй вариант, так как в будущем вам придётся работать с большим объёмом информации, и такая запись будет доставлять неудобства.

Разберём хранение параметров в отдельном файле.

Итак, создаем файл config.json

Вставляем в него следующий код:

{
    "token" : "Ваш_токен",
    "prefix" : "Ваш_префикс"
}

* Для получения токена зайдите на портал разработчиков, перейдите во вкладку «Bot» и скопируйте его.

* Самым распространённым среди разработчиков префиксом является !

Далее нам нужно создать файл bot.js и вставить в него данный код:

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 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); // Авторизация бота

Теперь создаём файл comms.js, в нём будут сами команды.

В нём должен быть следующий код:

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

Готово! Бот запущен и вы можете им пользоваться, ура!

Чтобы пригласить бота на свой сервер, воспользуемся нам уже известным порталом разработчиков.

Перейдём во вкладку OAuth2, пролистаем чуть ниже, выберем «Bot» и отметим нужные боту привилегии.

Теперь осталось скопировать ссылку-приглашение и добавить бота на свой сервер.

Как вывести ссылку-приглашение в терминал, при запуске бота?

Существует два способа:

  1. Заранее отметить нужные привилегии.

    Для этого, сначала мы должны скопировать ссылку-приглашение.
    После чего перейти в файл 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);
    

  2. Отметить нужные привилегии в самом коде.

    Повторяем процедуры из первого способа, но уже с другими строками кода:

    
    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);
    

    * Все привилегии указываются заглавными буквами

    Список доступных привилегий:

    ADMINISTRATOR
    CREATE_INSTANT_INVITE
    KICK_MEMBERS
    BAN_MEMBERS
    MANAGE_CHANNELS
    MANAGE_GUILD
    ADD_REACTIONS
    VIEW_AUDIT_LOG
    PRIORITY_SPEAKER
    STREAM
    VIEW_CHANNEL
    SEND_MESSAGES
    SEND_TTS_MESSAGES
    MANAGE_MESSAGES
    EMBED_LINKS
    ATTACH_FILES
    READ_MESSAGE_HISTORY
    MENTION_EVERYONE
    USE_EXTERNAL_EMOJIS
    VIEW_GUILD_INSIGHTS
    CONNECT
    SPEAK
    MUTE_MEMBERS
    DEAFEN_MEMBERS
    MOVE_MEMBERS
    USE_VAD
    CHANGE_NICKNAME
    MANAGE_NICKNAMES
    MANAGE_ROLES
    MANAGE_WEBHOOKS
    MANAGE_EMOJIS

    Я не советую вам из привилегий выбирать только ADMINISTRATOR, поэтому лучше указать только те привилегии, которые бот действительно использует для корректной работы

Полезные и интересные команды

В предыдущем разделе я показал вам, как запустить бота и как писать для него команды.
Теперь я хочу поделиться с вами несколькими своими командами.

  1. !say — с помощью этой команды бот может повторить ваше сообщение.

    Код:

    if (!mess.member.hasPermission("MANAGE_MESSAGES")) return mess.channel.send("У  вас нет прав"); /* Если у исполнителя команды нету привилегии MANGAGE_MESSAGES, он не сможет её использовать */
    
    args = mess.content.split(' ');
    args.shift();
    args = args.join(' ');
    
    mess.delete().catch(); // Удаление сообщения пользователя после отправки 
    
    mess.channel.send(args)
    

  2. !heads_or_tails — игра «Орёл или Решка».

    Код:

    mess.channel.send('Монета подбрасывается...')
    
    var random = Math.floor(Math.random() * 4) + 1; // Объявление переменной 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: Монета упала ребром!')
    }
    

  3. !clear — удаление определённого количества сообщений.

    Код:

    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(); // Вызов асинхронной функции
    
  4. !random_name — генерация случайного имени.

    Не стоит пугаться большого кода, здесь всё предельно просто.

    Код:

    var name = [ // Объявление массива name и занесение в него большого количества имён
      'Абрам', ' Аваз', ' Аввакум', ' Август', ' Августин',
      ' Авдей', ' Авраам', ' Автандил', ' Агап', ' Агафон',
      ' Аггей', ' Адам', ' Адис', ' Адольф', ' Адриан',
      ' Азамат', ' Айдар', ' Айнур', ' Айрат', ' Аким',
      ' Алан', ' Алей', ' Александр', ' Алексей', ' Али',
      ' Альберт', ' Альфред', ' Амадей', ' Амадеус',
      ' Амаяк', ' Амвросий', ' Ананий', ' Анастасий',
      ' Анатолий', ' Анвар', ' Ангел', ' Андоим', ' Андрей',
      ' Аникита', ' Антон', ' Арам', ' Арий', ' Аристарх',
      ' Аркадий', ' Арман', ' Арно', ' Арнольд', ' Арон', ' Арсен',
      ' Арсений', ' Арслан', ' Артем', ' Артемий', ' Артур', ' Архип', ' Аскар', ' Аскольд', ' Аслан', ' Афанасий', ' Ахмет', ' Ашот', ' Бальтазар', ' Бежен', ' Бенедикт', ' Берек', ' Бернард',
      ' Бертран', ' Богдан', ' Болеслав', ' Борис', ' Бронислав',
      ' Булат', ' Вадим', ' Валентин', ' Валерий', ' Вальтер',
      ' Варфоломей', ' Василий', ' Вацлав', ' Велизар', ' Венедикт', ' Вениамин', ' Викентий', ' Виктор', ' Вилли', ' Вильгельм', ' Виссарион', ' Виталий', ' Витольд', ' Владимир', ' Владислав', ' Владлен', ' Володар', ' Вольдемар', ' Всеволод', ' Вячеслав', ' Гавриил', ' Галактион', ' Гарри', ' Гастон', ' Гаяс', ' Гевор', ' Геннадий', ' Генрих', ' Георгий', ' Геракл', ' Геральд', ' Герасим', ' Герман', ' Глеб', ' Гордей', ' Гордон', ' Горислав', ' Градимир', ' Григорий', ' Гурий', ' Густав', ' Давид', ' Дамир', ' Даниил', ' Даниэль', ' Данияр', ' Дарий', ' Дементий', ' Демид', ' Демосфен', ' Демьян', ' Денис', ' Джамал', ' Джордан', ' Дмитрий', ' Добрыня', ' Дональд', ' Донат', ' Дорофей', ' Евгений', ' Евграф', ' Евдоким', ' Евсевий', ' Евсей', ' Евстафий', ' Егор', ' Елеазар', ' Елисей', ' Емельян', ' Еремей', ' Ермолай', ' Ерофей', ' Ефим', ' Ефрем', ' Жан', ' Ждан', ' Жорж', ' Захар', ' Зиновий', ' Ибрагим', ' Иван', ' Игнатий', ' Игорь', ' Илларион', ' Ильдар', ' Ильнар', ' Ильнур', ' Илья', ' Ильяс', ' Иннокентий', ' Иоанн', ' Иосиф', ' Ипполит', ' Искандер', ' Ислам', ' Камиль', ' Карим', ' Карл', ' Кирилл', ' Клим', ' Кондрат', ' Константин', ' Корней', ' Кузьма', ' Лавр', ' Лаврентий', ' Лев', ' Леон', ' Леонид', ' Леонтий', ' Леопольд', ' Лука', ' Лукьян', ' Любим', ' Макар', ' Максим', ' Максимилиан', ' Марат', ' Марк', ' Марсель', ' Мартин', ' Матвей', ' Мирон', ' Мирослав', ' Митрофан', ' Михаил', ' Михей', ' Мишель', ' Мстислав', ' Мурат', ' Муслим', ' Назар', 'Абрам', ' Аваз', ' Аввакум', ' Август', ' Августин', ' Авдей', ' Авраам', ' Автандил', ' Агап', ' Агафон', ' Аггей', ' Адам', ' Адис', ' Адольф', ' Адриан', ' Азамат', ' Айдар', ' Айнур', ' Айрат', ' Аким', ' Алан', ' Алей', ' Александр',
      ' Алексей', ' Али', ' Альберт', ' Альфред', ' Амадей', ' Амадеус', ' Амаяк', ' Амвросий', ' Ананий', ' Анастасий', ' Анатолий', ' Анвар', ' Ангел', ' Андоим', ' Андрей', ' Аникита', ' Антон', ' Арам', ' Арий', ' Аристарх', ' Аркадий', ' Арман', ' Арно', ' Арнольд', ' Арон', ' Арсен', ' Арсений', ' Арслан', ' Артем', ' Артемий', ' Артур', ' Архип', ' Аскар', ' Аскольд', ' Аслан', ' Афанасий', ' Ахмет', ' Ашот', ' Бальтазар', ' Бежен', ' Бенедикт', ' Берек', ' Бернард', ' Бертран', ' Богдан', ' Болеслав', ' Борис', ' Бронислав', ' Булат', ' Вадим', ' Валентин', ' Валерий', ' Вальтер', ' Варфоломей', ' Василий', ' Вацлав', ' Велизар', ' Венедикт', ' Вениамин', ' Викентий', ' Виктор', ' Вилли', ' Вильгельм', ' Виссарион', ' Виталий', ' Витольд', ' Владимир', ' Владислав', ' Владлен', ' Володар', ' Вольдемар', ' Всеволод', ' Вячеслав', ' Гавриил', ' Галактион', ' Гарри', ' Гастон',
      ' Гаяс', ' Гевор', ' Геннадий', ' Генрих', ' Георгий', ' Геракл',
      ' Геральд', ' Герасим', ' Герман', ' Глеб', ' Гордей', ' Гордон',
      ' Горислав', ' Градимир', ' Григорий', ' Гурий', ' Густав',
      ' Давид', ' Дамир', ' Даниил', ' Даниэль', ' Данияр',
      ' Дарий', ' Дементий', ' Демид', ' Демосфен',
      ' Демьян', ' Денис', ' Джамал', ' Джордан', ' Дмитрий', ' Добрыня',
      ' Дональд', ' Донат', ' Дорофей', ' Евгений', ' Евграф', ' Евдоким', ' Евсевий', ' Евсей', ' Евстафий', ' Егор', ' Елеазар', ' Елисей', ' Емельян', ' Еремей', ' Ермолай', ' Ерофей', ' Ефим', ' Ефрем', ' Жан', ' Ждан', ' Жорж', ' Захар', ' Зиновий', ' Ибрагим', ' Иван', ' Игнатий', ' Игорь', ' Илларион', ' Ильдар', ' Ильнар', ' Ильнур', ' Илья', ' Ильяс', ' Иннокентий', ' Иоанн', ' Иосиф', ' Ипполит', ' Искандер', ' Ислам', ' Камиль', ' Карим', ' Карл', ' Кирилл', ' Клим', ' Кондрат', ' Константин', ' Корней', ' Кузьма', ' Лавр', ' Лаврентий', ' Лев', ' Леон', ' Леонид', ' Леонтий', ' Леопольд', ' Лука', ' Лукьян', ' Любим', ' Макар', ' Максим', ' Максимилиан', ' Марат', ' Марк', ' Марсель', ' Мартин', ' Матвей', ' Мирон', ' Мирослав', ' Митрофан', ' Михаил', ' Михей', ' Мишель', ' Мстислав', ' Мурат',
      ' Муслим', ' Назар'
    ];
    
    var RandElement = name[Math.floor(Math.random() * (name.length))]; // Выбор случайного элемента из массива
    mess.channel.send(RandElement) // Отправка сообщения со случайным элементом из массива в чат
    

Заключение

Вот и подошла к концу первая часть обучения, как вы могли заметить, создать бота, используя библиотеку discord.js очень просто.

Итого, из этой статьи мы выяснили:

  • Как установить нужные модули и пакеты
  • Как установить среду разработки
  • Как установить среду выполнения
  • Как установить полезные расширения
  • Как создать аккаунт для бота
  • Как воплотить бота в жизнь
  • Как запустить бота
  • Как научить бота реагировать на команды
  • Как пригласить бота на свой сервер
  • Как писать код для работы команд

А также научились некоторым интересным и полезным командам.

Надеюсь, что вам понравилась моя статья и вы узнали из неё что-то новое.

Сайты для самостоятельного изучения

  • Основная документация discord.js
  • Документация discord.js №2
  • Руководство discord.js
  • Руководство discord.js №2

Всем привет, сегодня мы напишем Discord-бота на Python и discord.py + бонусом посмотрим на примеры ботов. Приступим 🙂

Перед работой

Перед тем, как начать, вам нужны:

  1. Python 3;
  2. discord.py;
  3. Discord-аккаунт и свой сервер.

Для установки discord.py воспользуйтесь пакетным менеджером:

pip3 install discord.py

Создаём нашего бота

Перейдите на Developer Portal и нажмите на New application.

Вы создали своё приложение, на странице приложение перейдите в Bot >> Add Bot и создайте своего Discord-бота.

Сохраните токен бота! Дальше он нам понадобится!

Если всё прошло успешно, поздравляю, половина дела сделана 😀

Добавление бота на сервер

Теперь можно добавить бота на сервер.

Перейдите в OAuth2 >> URL Generator, в Scopes выбираем Bot и ниже — права бота, копируем сгенерированный URL. Вставляем в браузер, и добавляем на наш сервер.

Эхо-бот

Напишем традиционного эхо-бота, и разберём каждую строчку кода.

Код:

import discord
from discord.ext import commands

config = {
    'token': 'your-token',
    'prefix': 'prefix',
}

bot = commands.Bot(command_prefix=config['prefix'])

@bot.event
async def on_message(ctx):
    if ctx.author != bot.user:
        await ctx.reply(ctx.content)

bot.run(config['token'])

Пример работы:

Разбор:

import discord
from discord.ext import commands

Нужные нам импорты.

config = {
    'token': 'your-token',
    'prefix': 'prefix',
}

Вспомогательный словарь config в котором храним токен и префикс команд (далее расскажу зачем нужен префикс команд).

bot = commands.Bot(command_prefix=config['prefix'])

Создаём нашего бота, в аргументе передаём префикс.

@bot.event

Декоратор, предназначенный для обработки событий, подробнее здесь.

async def on_message(ctx):

Создаём асинхронную функцию, с параметром ctx, представляет из себя сообщение.

if ctx.author != bot.user:

Проверка, не является ли автор сообщения нашим Discord-ботом. Дело в том, что если бот отправит сообщение, это будет новым событием, и тогда получается цикл.

await ctx.reply(ctx.content)

Отвечаем на сообщение (ctx.reply), в аргументы передаём сообщение (ctx.content).

bot.run(config['token'])

Запускаем нашего бота, в аргументы передаём токен бота.

Надеюсь вы разобрались с кодом, и мы можем переходить далее.

Обработка команд

Перед тем, как обрабатывать команды, нам пригодится наш префикс.

Рассмотрим код:

import random
import discord
from discord.ext import commands

config = {
    'token': 'your-token',
    'prefix': '$',
}

bot = commands.Bot(command_prefix=config['prefix'])

@bot.command()
async def rand(ctx, *arg):
    await ctx.reply(random.randint(0, 100))

bot.run(config['token'])

Результат работы:

Разбор:

@bot.command()

Декоратор обработки команд

async def rand(ctx, *arg):

Асинхронная функция rand

await ctx.reply(random.randint(0, 100))

Отвечаем на сообщение, в аргументы передаём случайное число от 0 до 100

Бонус

Проверка роли:

import random
import discord
from discord.ext import commands

config = {
    'token': 'your-token',
    'prefix': '$',
}

bot = commands.Bot(command_prefix=config['prefix'])

@bot.command()
@commands.has_role("Хозяин")
async def rand(ctx, *arg):
    await ctx.reply(random.randint(0, 100))

bot.run(config['token'])

Выгнать пользователя

import discord
from discord.ext import commands

config = {
    'token': 'your-token',
    'prefix': '$',
}

bot = commands.Bot(command_prefix=config['prefix'])

@bot.command()
async def kick(ctx, user : discord.User(), *arg, reason='Причина не указана'):
    await bot.kick(user)
    await ctx.send('Пользователь {user.name} был изгнан по причине "{reason}"')

bot.run(config['token'])

Содержание

  • Создание приложения и авторизация бота
  • Выбор среды разработки
  • Вариант 1: Python и библиотека discord
    • Шаг 1: Установка Python и библиотеки discord
    • Шаг 2: Создание словаря бота
    • Шаг 3: Создание тела бота
    • Шаг 4: Запуск бота
  • Вариант 2: JavaScript и discord.js
    • Шаг 1: Установка Node.js и discord.js
    • Шаг 2: Работа с файлами бота
    • Шаг 3: Запуск бота
    • Примеры полезных команд

Как создать бота в Дискорде

В статье мы расскажем о том, как создается приложение для бота, выполняется первая авторизация на сервере и пишется общий код для нормализации работы. Имея «каркас», вы уже можете добавлять пользовательские команды и сразу проверять, как они работают.

Создание приложения и авторизация бота

Далее речь пойдет о двух разных методах создания бота — при помощи JavaScript и Python. Каждый из них имеет свои особенности и нюансы, но вот метод создания приложения и авторизации бота на сервере остается одинаков, поскольку не зависит от выбранного языка программирования. После этого вы сможете перейти к подбору библиотеки и работе с кодом.

Перейти на Discord Developer Portal

  1. Перейдите по ссылке выше, чтобы оказаться на главной странице портала для разработчиков в Discord. Используйте личные авторизационные данные для входа в аккаунт.
  2. Авторизация на портале разработчиков для создания бота в Discord

  3. Создайте новое приложение, нажав кнопку «New Application».
  4. Переход к созданию нового приложения на портале разработчиков для создания бота в Discord

  5. Введите имя приложения и подтвердите его создание.
  6. Создание нового приложения на портале разработчиков для создания бота в Discord

  7. Разверните меню сайта, щелкнув по кнопке с тремя горизонтальными линиями.
  8. Открытие меню приложения на портале разработчиков для создания бота в Discord

  9. Из появившегося списка выберите раздел настроек «Bot».
  10. Переход в раздел Бот на портале разработчиков для создания бота в Discord

  11. Приступите к добавлению нового бота для данного приложения.
  12. Кнопка для создания бота в Discord на портале разработчиков

  13. Подтвердите отобразившееся уведомление, нажав «Yes, do it».
  14. Использование кнопки подтверждения для создания бота в Discord на портале разработчиков

  15. По завершении сайт обновится и откроется страница бота, где вы можете изменить его название, скопировать токен или добавить иконку, которая будет отображаться и в Дискорде.
  16. Основные параметры приложения для создания бота в Discord

  17. Однако сейчас бот еще не отмечен таковым и для него не установлены разрешения, поэтому через то же самое меню перейдите в раздел «OAuth2».
  18. Переход к выбору типа приложения для создания бота в Discord на портале разработчиков

  19. В списке «Scopes» отметьте галочкой «bot», обозначив тип созданного приложения.
  20. Выбор типа приложения для создания бота в Discord на портале разработчиков

    Lumpics.ru

  21. Найдите следующий блок — «Bot Permissions» и установите галочки напротив всех разрешений, которые вы хотите предоставить создаваемому боту.
  22. Выбор разрешений для создания бота в Discord на портале разработчиков

  23. То же самое сделайте и с остальными типами разрешений, они соответствуют доступным непосредственно в Discord для ролей.
  24. Выбор других разрешений для создания бота в Discord на портале разработчиков

  25. Теперь бот готов для авторизации. На этой же странице найдите строку со ссылкой и скопируйте ее.
  26. Копирование ссылки для создания бота в Discord на портале разработчиков

  27. Вставьте в адресную строку и перейдите по ней. В появившейся форме выберите сервер для авторизации. Если у вас еще нет собственного сервера, создайте его, а затем вернитесь к процессу подключения бота.

    Подробнее: Создание сервера в Discord

  28. Авторизация для создания бота в Discord через портал разработчиков

  29. Ознакомьтесь со списком всех разрешений и нажмите на «Авторизовать».
  30. Принятие списка с правами для создания бота в Discord через портал разработчиков

  31. Осталось только подтвердить появившуюся на экране капчу.
  32. Подтверждение капчи для создания бота в Discord через портал разработчиков

  33. Откройте соответствующий сервер в Discord и убедитесь в том, что бот находится в списке участников. Пока что он еще офлайн, а запуск станет доступен после написания «тела» бота при помощи Python или JS, чем мы и займемся далее.
  34. Проверка списка участников в сети для создания бота в Discord через портал разработчиков

Выбор среды разработки

Перед началом работы с кодом в упомянутых языках программирования уточним, что вам понадобится установить текстовый редактор или специальную среду разработки, поддерживающую синтаксис Python или JavaScript (в зависимости от выбранного). Конечно, можно использовать просто «Блокнот», но по удобству он уступает специализированным программам. Просмотрите их списки в обзорах по следующим ссылкам и выберите для себя подходящий софт.

Подробнее:
Выбор среды разработки для программирования
Текстовые редакторы для Windows

Выбор среды разработки для создания бота в Discord

Вариант 1: Python и библиотека discord

Если ранее вы не сталкивались с языками программирования или знакомы с ними только поверхностно, создание бота для Discord на Python — лучший выбор. Этот ЯП проще учится, компактный и имеет логически понятный синтаксис, поэтому идеально подходит новичкам. К тому же в сети есть огромное количество исходников с различными командами или уже готовыми ботами, которые ничего не мешает скопировать и использовать в своих целях. В следующих шагах вы узнаете, как создать «каркас» бота на Python и запустить его, чтобы проверить работу.

Шаг 1: Установка Python и библиотеки discord

По умолчанию в Windows нет встроенных функций и утилит, предназначенных для работы с Питоном, поэтому их придется установить отдельно, не забыв про подключаемую библиотеку discord, которая позволит взаимодействовать с полезными функциями и командами, связанными исключительно с Дискордом.

Перейти на официальный сайт Python

  1. Воспользуйтесь ссылкой выше, чтобы перейти на официальный сайт Python и нажмите кнопку для загрузки его последней версии.
  2. Кнопка скачивания компонентов языка программирования для создания бота в Discord при помощи Python

  3. На новой странице отыщите инсталлятор для Windows и начните его загрузку.
  4. Выбор версии языка программирования для создания бота в Discord при помощи Python

  5. Дождитесь завершения скачивания и запустите установщик.
  6. Загрузка установочного файла компонентов языка программирования для создания бота в Discord при помощи Python

  7. Можно запустить установку без изменений, но обязательно отметьте галочкой «Add Python X.X to PATH», чтобы все переменные среды добавились автоматически и не возникло проблем при дальнейшем вводе команд.
  8. Кнопка установки компонентов языка программирования для создания бота в Discord при помощи Python

  9. Ожидайте завершения установки и на всякий случай перезагрузите компьютер, чтобы все изменения вступили в силу.
  10. Процесс установки компонентов языка программирования для создания бота в Discord при помощи Python

  11. Откройте «Командную строку» удобным для вас способом, например, отыскав приложение в меню «Пуск».
  12. Переход в Командную строку для установки библиотек ЯП для создания бота в Discord при помощи Python

  13. Напишите команду pip install discord и подтвердите ее нажатием клавиши Enter.
  14. Команда установки библиотек ЯП для создания бота в Discord при помощи Python

  15. Начнется загрузка файлов и в консоли «побегут» строки. Не закрывайте данное окно до завершения скачивания.
  16. Процесс установки библиотек ЯП для создания бота в Discord при помощи Python

  17. Как только появилась информация «Successfully installed», закрывайте «Командную строку» и переходите далее.
  18. Успешная установка компонентов ЯП для создания бота в Discord при помощи Python

Если Python у вас установлен, но команда для добавления подключаемой библиотеки не работает, выполните обновление компонента PIP, о чем рассказывается в другой статье на нашем сайте. Там же вы найдете инструкцию и по изменению переменных среды, если этого не произошло во время установки.

Подробнее: Обновление PIP для Python

Шаг 2: Создание словаря бота

В этом варианте мы будем использовать словарь для бота, то есть конфигурационный файл, хранящий в разных именах значения токена, префикса и имени бота. Это существенно упрощает весь процесс написания кода и не заставляет каждый раз вспоминать данные приложения, чтобы ввести их в одной строке.

  1. Начните с запуска IDLE, отыскав добавленное приложение через меню «Пуск». Если вы скачали другую среду разработки, откройте ее и создайте новый проект на базе Python.
  2. Запуск среды разработки для создания бота в Discord при помощи Python

  3. После открытия нового окна вызовите меню «File» и выберите пункт «New File». Сделать это можно и при помощи комбинации клавиш Ctrl + N.
  4. Открытие нового файла в среде разработки для создания бота в Discord при помощи Python

  5. В новом окне, которое и предназначено для написания кода, вставьте блок

    settings = {
    'token': 'Ваш токен',
    'bot': 'Имя бота',
    'id': Client ID бота, без кавычек,
    'prefix': 'Префикс бота'
    }

  6. Вставка кода словаря для создания бота в Discord при помощи Python

  7. Теперь понадобится отыскать информацию для ее замены в словаре. Сначала найдите Client ID приложения на сайте разработчиков. Скопируйте его и замените в соответствующую строку.
  8. Копирование ИД на сайте приложения для создания бота в Discord при помощи Python

  9. Вызовите меню и перейдите в раздел «Bot».
  10. Переход к копированию токена для создания бота в Discord при помощи Python

  11. Скопируйте его уникальный токен, щелкнув по специально отведенной для этого кнопке.
  12. Копирование токена для создания бота в Discord при помощи Python

  13. Вставьте токен вместо надписи, сделайте то же самое с именем бота и используемым префиксом (префикс нужен для вызова команд и всегда идет перед ними, например !play, а вы можете заменить восклицательный знак на любые другие символы).
  14. Замена строк в файле словаря для создания бота в Discord при помощи Python

  15. Как только вся информация была заменена, снова вызовите меню «File» и выберите вариант «Save As».
  16. Переход к сохранению файла словаря для создания бота в Discord при помощи Python

  17. Создайте отдельную папку для файлов бота, назовите этот как config и подтвердите сохранение.
  18. Сохранение файла словаря для создания бота в Discord при помощи Python

Шаг 3: Создание тела бота

Для обеспечения базового функционирования бота ему нужно создать «тело» — основной код для запуска и работы на сервере. Понадобится отдельный файл, который можно назвать как угодно, но обязательно сохранить его в том же месте, где находится созданный ранее словарь.

  1. В среде разработки откройте меню «File» и создайте новый файл.
  2. Создание файла тела для создания бота в Discord при помощи Python

  3. Вставьте туда три команды, которые предназначены для импорта установленных библиотек и созданного ранее файла:

    import discord
    from discord.ext import commands
    from config import settings

  4. Импорт библиотек и словаря в файл тела для создания бота в Discord при помощи Python

  5. Добавьте строку bot = commands.Bot(command_prefix = settings['prefix']) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix.
  6. Объявление бота в основном файле для создания бота в Discord при помощи Python

  7. Основной код таков:

    @bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
    async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
    author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.


    await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.

  8. Обращайте внимание на комментарии, идущие после знака «#» — они позволят разобраться с предназначением каждой строки.
  9. Добавление команд в основной файл для создания бота в Discord при помощи Python

  10. Команда для запуска выглядит так: bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена.
  11. Строка запуска приложения для создания бота в Discord при помощи Python

  12. По завершении снова откройте уже знакомое меню и перейдите к сохранению файла.
  13. Переход к сохранению основного файла для создания бота в Discord при помощи Python

  14. Задайте для него любое название и поместите в папку с конфигом.
  15. Сохранение основного файла для создания бота в Discord при помощи Python

Далее вы видите полный код, о котором шла речь выше, поэтому при надобности просто можете скопировать его.

Использование альтернативного кода для создания бота в Discord при помощи Python

import discord
from discord.ext import commands
from config import settings

bot = commands.Bot(command_prefix = settings['prefix'])

@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.
await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.

bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена

Дополнительно уточним, что вы можете использовать альтернативную схему, избавившись от файла со словарем и получив немного другое «тело» для бота. Решите, подходит ли вам этот код больше. Указанные строки с токеном нужно будет отредактировать под себя.

import discord
from discord.ext import commands

TOKEN = 'Ваш токен'
bot = commands.Bot(command_prefix='!')

@bot.command(pass_context=True) # разрешаем передавать аргументы
async def test(ctx, arg): # создаем асинхронную функцию бота
await ctx.send(arg) # отправляем обратно аргумент

bot.run(TOKEN)

Шаг 4: Запуск бота

Теперь можно запустить бота для проверки, для чего понадобится созданный в Шаге 3 основной файл. Скомпилируйте его прямо через среду разработки или вызовите «Командную строку» и введите там python bot.py, где bot.py — название созданного файла. Если файл найти не удалось, укажите его полный путь, например python C:UsersUSER_NAMEbot.py.

Запуск основного файла для создания бота в Discord при помощи Python

Перейдите в Дискорд и проверьте текущее состояние бота. Он должен отображаться в списке участников в разделе «В сети» вместе с зеленой точкой.

Проверка статуса бота для создания в Discord после его создания при помощи Python

Воспользуйтесь открытыми источниками или собственными знаниями, чтобы написать команды для бота или реализовать другие задачи, которые он должен выполнять. Для этого редактируйте его основной файл или создавайте другие, связывая все в единый проект.

Вариант 2: JavaScript и discord.js

Следующий вариант создания бота для Discord — использование JS и подключаемой библиотеки discord.js, которая добавляет все необходимые компоненты для работы с ботами. Принцип действий отличается от предыдущего варианта лишь инструментами и разницей в синтаксисах языков программирования, но остается примерно таким же.

Шаг 1: Установка Node.js и discord.js

Расширить функциональность JS и превратить его в язык программирования общего назначения поможет платформа Node.js, установкой которой и рекомендуем заняться в первую очередь. Для этого выполните простейший алгоритм действий:

Перейти на официальный сайт Node.js

  1. Откройте страницу Node.js в интернете и выберите последнюю рекомендованную версию для скачивания.
  2. Кнопка скачивания расширенной платформы для создания бота в Discord при помощи JavaScript

  3. Дождитесь получения исполняемого файла и запустите его.
  4. Процесс загрузки расширенной платформы для создания бота в Discord при помощи JavaScript

  5. Следуйте появившимся на экране инструкциям, завершите установку и перезагрузите компьютер.
  6. Установка расширенной платформы для создания бота в Discord при помощи JavaScript

  7. Раскройте «Пуск» и через поиск отыщите классическое приложение «Командная строка».
  8. Переход в Командную строку для создания бота в Discord при помощи JavaScript

  9. В ней напишите команду npm init и активируйте ее нажатием Enter.
  10. Команда установки файлов пакетов для создания бота в Discord при помощи JavaScript

  11. Создайте стандартный пакет с пользовательской информацией, нажимая Enter после ввода каждого параметра, или оставьте все по умолчанию.
  12. Процесс установки файлов пакетов для создания бота в Discord при помощи JavaScript

  13. Когда все параметры пакета окажутся заданы, вы получите предупреждение, которое нужно подтвердить, снова нажав Enter.
  14. Успешная установка файлов пакетов для создания бота в Discord при помощи JavaScript

  15. Введите команду npm install для установки недостающих стандартных компонентов.
  16. Команда установки основных компонентов библиотек для создания бота в Discord при помощи JavaScript

  17. Дождитесь завершения их загрузки и появления строки ввода.
  18. Успешная установка компонентов библиотек для создания бота в Discord при помощи JavaScript

  19. Напишите npm install discord.js.
  20. Установка библиотеки для создания бота в Discord при помощи JavaScript

  21. Как только и эта команда выполнена, откройте папку своего пользователя и убедитесь в наличии созданных файлов пакета формата JSON.
  22. Проверка добавленных пакетов для создания бота в Discord при помощи JavaScript

Шаг 2: Работа с файлами бота

Все действия, связанные с файлами бота и программным кодом, рассмотрим в рамках одного этапа, поскольку делить их на несколько просто не имеет смысла. Вам понадобятся три основных файла, куда и вписываются все необходимые функции: один отвечает за конфигурацию бота, второй — за «тело», а третий хранит список добавленных команд.

  1. Для начала создайте файлы «bot.js» и «config.json» в одном каталоге.
  2. Создание основных файлов для создания бота в Discord при помощи JavaScript

  3. Откройте через текстовый редактор или среду разработки «config.json» и добавьте туда такие строки:

    {
    "token" : "Ваш_токен",
    "prefix" : "Ваш_префикс"
    }

    Соответственно, выражения в двойных кавычках замените на уникальный токен бота и предпочитаемый префикс.

  4. Редактирование конфигурационного файла для создания бота в Discord при помощи JavaScript

  5. Откройте для редактирования файл «bot.js» (кстати, его название может быть любым). Вставьте туда данный блок кода.

    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 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); // Авторизация бота

    Читайте комментарии к строчкам, идущие после слэшей («//»), чтобы самостоятельно разобраться с предназначением каждой.

  6. Редактирование файла тела для создания бота в Discord при помощи JavaScript

  7. Создайте третий файл — «comms.js», в котором в будущем будут храниться все необходимые команды.
  8. Создание файла с командами для создания бота в Discord при помощи JavaScript

  9. В него вставьте основной блок, который в будущем будет расширяться:

    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;

  10. Редактирование файла с командами для создания бота в Discord при помощи JavaScript

Для дальнейшей работы с командами достаточно будет объявить их функции и пополнить список соответствующими блоками кода. На примере готовый файл «comms.js» выглядит так:

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;

Шаг 3: Запуск бота

Первые действия с ботом на JavaScript завершены, а значит, можно запустить его и проверить работу. Для этого вам понадобится выполнить следующее:

  1. Откройте меню «Пуск» через поиск отыщите «Командную строку» и запустите ее.
  2. Переход к запуску приложения для создания бота в Discord при помощи JavaScript

  3. Введите node bot.js, где bot.js — название основного файла с кодом для бота. Если он находится не в вашей домашней папке, указывайте полный путь к файлу или сначала перейдите к расположению, используя команду cd.
  4. Запуск приложения для создания бота в Discord при помощи JavaScript через командную строку

Примеры полезных команд

В завершение этого варианта вкратце расскажем о двух полезных командах, которые могут пригодиться при настройке бота. Их можно использовать в качестве тестовых, когда работа над проектом еще находится на стадии развития. Первая команда — !clear — удаляет указанное количество сообщений в чате. Ее код выглядит следующим образом:

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 {
mess.channel.bulkDelete(messages)
mess.channel.send(`Удалено ${amount} сообщений!`)
})
};
delete_messages(); // Вызов асинхронной функции

Вторая команда предназначена для подбрасывания монетки и запускается путем ввода !heads_or_tails в чате. Здесь код не такой сложный, поскольку действий мало и бот должен откликнуться всего на один запрос без огромного количества переменных.

mess.channel.send('Монета подбрасывается...')

var random = Math.floor(Math.random() * 4) + 1; // Объявление переменной 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: Монета упала ребром!')
}

В интернете вы можете найти другие полезные команды, которые хотите включить в своего бота, однако для работы с ними все же понадобятся продвинутые знания в JavaScript или Python, чтобы самостоятельно исправлять ошибки или редактировать код под себя.

Чтобы подключить бота Discord в ваше приложение, вам понадобятся токен бота (для настройки модуля) и ID канала, в который вы будете отправлять сообщения (для формы отправки).

Расскажем, как создать сервер, канал и бота Discord, а после добавить созданного бота на ваш сервер. О том, как настроить отправку сообщений на платформе AppMaster.io, можно прочитать в этой статье.

Создать сервер и канал, скопировать ID канала

Для начала вам нужно создать новый сервер в Discord (или получить права администратора на уже существующем). Откройте страницу вашей учетной записи Discord в браузере — так будет удобнее перемещаться между страницами настроек.

1. Нажмите на «+» на левой панели.

2. Выберите шаблон сервера в зависимости от вашей сферы или создайте собственный.

3. Укажите, для каких целей хотите его использовать.

4. Выберите изображение будущего сервера и укажите его название (1), затем нажмите Create. (2).

5. Сервер создан. По умолчанию в него уже добавлены два канала — текстовый и голосовой (1). Чтобы изменить настройки канала, нажмите значок шестеренки (2). Добавить новый канал можно, нажав на «+» рядом с названием раздела. Мы не будем создавать новый канал и для подключения нашего бота используем уже существующий канал general.

6. Теперь нужно получить ID выбранного канала. Для этого нужно сначала включить режим разработчика в настройках вашего профиля. Нажмите на значок шестеренки рядом с вашим никнеймом и фотографией.

7. Перейдите в раздел APP SETTINGS, на вкладку Advanced (1) и переместите селектор Developer mode — режим разработчика активируется (2).

8. Вернитесь из меню настроек и кликните по нужному каналу правой клавишей мыши (1), во всплывающем меню выберите Copy ID — идентификатор вашего канала будет скопирован (2). Сохраните его в любом текстовом документе, чтобы не возвращаться к этому шагу.

Создать бота и добавить его на сервер, скопировать токен бота

Чтобы создать бота, перейдите на специальную страницу Discord для разработчиков: https://discord.com/developers/. Откройте ее в соседней вкладке браузера, не выходя из вашей учетной записи Discord.

Сначала вам нужно создать приложение, затем в этом приложении создать бота и настроить для него разрешения, и только после этого — добавлять бота на сервер.

1. На вкладке Applications выберите New Application.

2. Введите название будущего приложения (1) и нажмите Create (2).

3. Приложение создано. Перейдите не вкладку Bot (1) и нажмите Add Bot, чтобы добавить нового бота.

4. Согласитесь добавить бота в ваше приложение.

5. Бот создан. На вкладке Bot отобразится вся информация о нем. Тут можно изменить его имя, добавить изображение и скопировать токен бота (1). Этот токен понадобится вам для настройки модуля Discord на платформе Appmaster.i. Каждый раз при внесении изменений портал разработчика будет предлагать вам сохранить их (2).

Сохраните токен бота, чтобы при последующей настройке не возвращаться к этому шагу.

6. Теперь перейдите на вкладку OAuth2 (1) — тут можно настроить разрешения и получить ссылку на вашего бота. В разделе SCOPES выберите bot(2), в BOT PERMISSIONS отметьте разрешения, которые хотите ему предоставить, в нашем случае — только отправка сообщений, поэтому выберите Send Message(3). После скопируйте автоматически сгенерированную Discord ссылку(4).

7. Вставьте скопированную ссылку в адресную строку браузера и перейдите по ней — откроется окошко вашего приложения. Выберите ваш сервер в раскрывающемся списке (1) и нажмите Continue (2).

8. Убедитесь, что приложению (а значит, и созданному в нем боту) даны только необходимые разрешения, после чего добавьте его на ваш сервер.

9. Теперь вернитесь на ваш сервер. Бот оставил приветственное сообщение — значит, что он успешно добавлен и функционирует.

Через AppMaster.io Studio подключить бота в приложение

Итак, все готово. Вы получили токен бота для модуля Discord и ID канала для формы отправки сообщения. Теперь перейдите в AppMaster.io Studio и настройте отправку сообщений из вашего приложения, следуя инструкции Модуль Discord: подключение бота и отправка сообщений.

Следите за нашим блогом и присоединяйтесь к чату комьюнити, чтобы узнавать о новостях платформы и новых статьях.

⛔ DEPRECATED

discordbotstut

Начнём. Ссылка на мой youtube канал.

Discord bot туториал. Туториал по созданию ботов для дискорда на node.js используя discord.js.

Creation date : 06.12.2019
Также отдельное спасибо Top Bots List и его создателю Angrymoyse#0444 за помощь в написании.

Установка node.js.

Давайте начнём создание бота. Если у вас установлена node.js, то пропустите сделающие 2 строчки.
Заходим на сайт node.js, скачиваем, устанавливаем. Скриншотов процесса установки нету, тк переустанавливать node.js нету желания. Но там всё интуитивно понятно.

Создание файлов, инициализация проекта, установка библиотек.

Создаём папку bot. Желательно не использовать кирилицу, юникод и т. п. в названии.
Сразу же создаём файл index.js или bot.js. Это не несёт особого смысла. Можно назвать как угодно, но принятно index.js / bot.js.
Это будет главный файл бота, т.е. первым запускается, в нём основной код бота.
Далее открываем консоль / терминал если у вас linux.
Для быстрого открытия консоли на windows можно нажать WIN + R, ввести cmd.
Далее переходим в папку бота, думаю как это сделать через консоль всем понятно. Пишим :
npm init — инициализация проекта.
Жмём enter до конца. Если ошибка в package name, то напишите bot.
npm i discord.js — установка библиотеки discord.js.

Редакторы кода.

Далее рекомендую установить один из следующих редакторов кода :

Atom.
VScode.
WebStorm (спасибо за подсказку Mice V 4.4.4#0444 )

Если очень слабый компьюер можете поставить notepad++, но это для постоянной основы не самый хороший вариант.
Лично я использую Atom.

Аккаунт бота.

Вы можете зарегистрировать его на сайте discord developers.
Жмём кнопку «New Application». Вводим название бота. Жмём «Create».
Переходим во вкладку «Bot», нажимаем «Add Bot», затем «Yes, do it!»
Находим строку «token», немного ниже есть кнопка «Copy», нажимаем. Теперь в вашем буфере обмена есть токен бота.

Код.

Начало.

Создадим первый код. Пишем :

const Discord = require("discord.js"); //Подключаем discord.js для дальнейшего использования.
const client = new Discord.Client(); 
client.login("token"); //Где token пишем токен бота.
Запуск.

Открываем консоль, переходим в папку проекта и пишем :

node название-файла-с-кодом.js

в зависимости от названия файла.
Если у вас windows, то вы можете создать файл start.bat с текстом

node название-файла-с-кодом.js
pause

Если линукс, то вы можете создать файл start.sh

node название-файла-с-кодом.js

Это будет запускать бота. Далее я не буду говорить про запуск. Делайте это сами.

Конфиг.

Создаем файл config.json с конфигурацией нашего бота.

{
"version" : "1.0", 
"prefix" : "!"
}

В начале кода бота напишем :

const config = require("./config.json");

Еще вы можете создать конфиг прямо в коде бота.

let config ={ 
"version" : "1.0",
"prefix" : "!" 
}

Но второй вариант крайне не рекомендуется использовать, ведь для того что-бы изменить конфиг бота нам придется изменять его код.

Реагирование на сообщение.

Теперь давайте делать что-то когда приходит новое сообщение.
Например логировать его текст.

client.on("message", message => { //Пришло сообщение.
console.log(message.content); //console.log логирует в консоль, message - объект сообщения, message.content - строка объекта с текстом сообщения.
})

Получение информации о авторе сообщения (отправителе).

Давайте залогируем тег автора.

client.on("message", message => { //Пришло сообщение.
console.log(message.author.tag); //message.author.tag содержит в себе тег автора.
})

Команда !ping

Давайте в ответ на сообщение !ping отправлять такое сообщение : «@user, мой пинг равен » далее пинг.

client.on("message", message => { //Пришло сообщение.
if(message.content.toLowerCase()==config.prefix + "ping") //Если текст сообщения равен префиксу плюс ping, то происходит код в {} Часть кода .toLowerCase() превращает текст в строчный. (Делает из заглавных букв обычные.) 
{
message.reply("мой пинг равен " + client.ping) //message.reply отвечает на сообщение.
//Также можно использовать message.channel.send(message.author + ", мой пинг равен " + client.ping);
}
})

Также можно писать не

if(message.content.toLowerCase()==config.prefix + "ping")

А

if(message.content.toLowerCase().startsWith(config.prefix + "ping"))

.startsWith проверят начинается ли строка с символов в аргументах.

Об отправке сообщений.

Теперь рассмотрим message.channel.send();
Когда я только начинал программировать я не понимал смысл этой фразы, но сейчас понимаю и могу рассказать вам. message — объект сообщения, в нём есть channel — канал в который было отправлено, то есть с помощью message.channel мы получаем канал, а .send() отправляет туда сообщение.

client.on("message", message => { //Пришло сообщение.
if(message.content.toLowerCase()==config.prefix + "test")
{
message.channel.send("I am working now!");
}
})

Также можно отправлять сообщение по ID канала.
Делается это так :

//some code...
client.channels.get('ID канала').send("Hi!");

client.channels — все каналы которые есть на серверах с ботом.
.get(‘ID’) получает канал из них по ID.
.send(«Text»); Отправляет сообщение.
ID канала можно получить используя devepoer mode

Eval.

Также даже начинающим программистам будет очень полезна в боте команда !eval для выполнения кода не пиша его в коде бота, т.е. вы пишите !eval какой-то код и бот выполняет этот код.
Я нашёл хороший туториал по этой команде на github. Рекомендую ознакомиться и взять себе команду в код бота. Принцип её работы мы разберём позже. Тык.

RichEmbed.

Пример.

Думаю вы все видели как боты отправляют сообщения такого типа.

Image alt

Это называется RichEmbed (Embed).
Давайте отправим простой эмбед похожий на данный. (Картинка ниже)

Image alt

Команда.

Для этого создадим новую команду !ping.

client.on("message", message => { //Пришло сообщение.
if(message.content.toLowerCase()==config.prefix + "ping") //Выше было
{
let embed = new Discord.RichEmbed() //Создаём новый эмбед.
.setTitle('Пинг бота.') //Устанавливаем заголовок.
.setColor(`GREEN`) //Цвет зелёный. Можно указать hex.
.setDescription("Пинг : " + client.ping); //Устанавливаем описание.
message.channel.send(embed); //Отправляем.
}
})
Параметры.

В Embed есть много различных параметров, вы можете прочесть их далее, либо посмотреть на оффициальном сайте discord.js

embed.setColor("Цвет в hex или один из встроенных."); // Устанавливает цвет боковой полосы.
embed.setDescription("Описание") //Устанавливает описание.
embed.serFooter("Подпись") //Устанавливает подпись мелким шрифтом под эмбедом.
embed.setThumbnail("url") //Миниатюра эмбеда.
embed.setAuthor("Имя", "Url") //Устанавливает автора.
embed.addField("Заголовок", "Текст") //Добавляет поле.
embed.setImage("URL") //Добавляет картинку.
Пример.

Команда !avatar.

client.on("message", message => { //Пришло сообщение.
if(message.content.toLowerCase().startsWith(config.prefix + "avatar")) //Выше было
{
let mb = message.mentions.members.first() || message.member; // Если есть упомянание человека в сообщении, то берём его, если нету, то себя. Расскажу чуть позже.
let color = mb.displayHexColor; //Цвет самой высокой роли человека, если цвет невидимый то самой высокой отображаемой роли.
if (color == '#000000') color = mb.hoistRole.hexColor;//Цвет самой высокой роли человека.
let embed = new Discord.RichEmbed() //Создаём эмбед
.setImage(mb.user.avatarURL) //Устанавливаем картинку - аватар человека.
.setColor(color) //Цвет.
.setFooter("Аватар пользователя " + mb.user.tag); //Устанавливаем в подпись чей это аватар.
message.channel.send({embed}); //Отправляем.
}
})

Вышло так

Image alt

Команда !userinfo.

Давайте сделаем команду для получения информации о пользователе. Команда взята из моего бота.
Будем использовать библиотеку moment.js, устанавливаем npm i moment.js

const status = { //Создадим переменную со статусами чтобы они были не английском.
  "online": "Онлайн.",
  "idle": "Не на месте.",
  "dnd": "Не беспокоить.",
  "offline": "Оффлайн."
}

let mbr = message.mentions.members.first() || message.member; //Если есть упомянание, то mbr = тот кого упомянули, если нету то автору сообщения.
      if (mbr){ //Если всё ок.
      let embed = new Discord.RichEmbed() //Создаём эмбед
      .setAuthor(mbr.user.tag, mbr.user.avatarURL) //Устанавливаем автора
      .setColor(`GREEN`) //Цвет зелёный
      .setTitle("Тег") //Устанавливаем заголовок
      .setDescription(mbr.user.tag) //Описание - тег юзера.
      .addField("ID",  mbr.user.id) //Первое поле - айди автора.
      .addField("Никнейм",  mbr.nickname !== null ? mbr.nickname : "No nickname") //Второе поле - никнейм (НЕ ПУТАТЬ С НИКОМ И ТЕГОМ)!
      .addField("Статус", status[mbr.user.presence.status]) //Статус человека
      .addField("Играет в ", mbr.user.presence.game ? mbr.user.presence.game.name : "Ничего") //Во что играет
      .addField("Присоединился", moment(mbr.joinedAt).format('MMMM Do YYYY h:mm:ss')) //Когда зашёл на сервер
      .addField("Аккаунт создан", mbr.user.createdAt.toLocaleString()) //Когда создан аккаунт
      .addField("Роли на сервере", mbr.roles.filter(r => r.id !== message.guild.id).map(roles => ``${roles.name}``).join(" **|** ") || "No Roles") //Роли человека на сервере
      .setThumbnail(mbr.user.displayAvatarURL) //Аватар человека
      .setFooter("Информация о пользователе.") //Футер
      message.channel.send({embed}); //Отправляем
}
else message.reply("Вы забыли упомянуть пользователя."); //Это вряд-ли сможет произойти, но на всякий случай

Вышло так.

Image alt

Мой дискорд сервер!

Прошу зайти на мой дискорд сервер, ведь я долго делал туториал, а вам не сложно зайти на мой сервер в виде благодарности.

В разработке..

Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.

Как создать Дискорд-бота на основе discord.js

На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.

Выполните следующие шаги:

  1. Войдите на сайт discord.com/developers/applications/.

  1. Жмите на кнопку New Application.

  1. Введите название будущего бота Дискорд, к примеру, Music Bot.
  2. Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.


Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:

  1. Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.

  1. Укажите необходимые разрешения для проигрывания музыки и чтения.
  2. Копируйте созданный URL и вставьте его в веб-проводник.
  3. Выберите сервер, куда нужно добавить URL.
  4. Жмите на кнопку авторизации (Authorize).


На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:

  1. Создайте модули проекта с применением nmp init.
  2. Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
  3. Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
  4. Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
  5. Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
  6. Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.

{

«prefix»: «!»,

«token»: «your-toke»

}

  1. Войдите на портал создания Дискорд и копируйте токен из раздела Bot (жмите на кнопку Copy).

Теперь нужно создать код javascript. Для этого копируйте следующие зависимости:

const Discord = require(‘discord.js’);

const {

prefix,

token,

} = require(‘./config.json’);

const ytdl = require(‘ytdl-core’);

После этого нужно создать с применением токена клиент и логин.

const client = new Discord.Client();

client.login(token);

Далее добавьте несколько listeners, которые выполняют console.log при пуске.

client.once(‘ready’, () => {

console.log(‘Ready!’);

});

client.once(‘reconnecting’, () => {

console.log(‘Reconnecting!’);

});

client.once(‘disconnect’, () => {

console.log(‘Disconnect!’);

});

После этого начните работать с ботом Дискорд с применением node. Важно, чтобы вновь созданный Discord-бот был онлайн. В консоли появится Ready!. Команда — node index.js.

Задание команд для бота Дискорд

Теперь остается задать необходимые команды.

Для чтения сообщений

Чтобы Дискорд-бот мог читать, напишите функцию.

client.on(‘message’, async message => {

}

Далее сделайте listener для massage-события, получите сообщение и сохраните его в massage. Если информация пришла от бота Дискорд, игнорируйте ее. Выполните проверку с помощью следующей команды.

if (message.author.bot) return;

Если сообщение вернулось, значит, его смог создать бот. Теперь проверьте, с какого префикса оно начинается.

if (!message.content.startsWith(prefix)) return;

Далее проверьте команду, которую нужно активировать. Используйте следующие команды.

if (message.content.startsWith(`${prefix}play`)) {

execute(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}skip`)) {

skip(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}stop`)) {

stop(message, serverQueue);

return;

} else {

message.channel.send(‘You need to enter a valid command!’)

}

После получения списка команд, которые можно запустить, переходите к их созданию.

Добавление песен

Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте map с названием очереди, где будут храниться песни.

const queue = new Map();

Теперь создайте async0-функцию с названием execute и убедитесь, находится ли пользователь в чате, и имеется ли необходимое разрешение. При его отсутствии пишете сообщение об ошибке.

async function execute(message, serverQueue) {

const args = message.content.split(‘ ‘);

const voiceChannel = message.member.voiceChannel;

if (!voiceChannel) return message.channel.send(‘You need to be in a voice channel to play music!’);

const permissions =     voiceChannel.permissionsFor(message.client.user);

if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) {

return message.channel.send(‘I need the permissions to join and   speak in your voice channel!’);

}

}

Перейдите к получению данных о песне и сохраните ее в song. Для этого потребуется ytdl-библиотека, получающая данные по ютуб-ссылке.

const songInfo = await ytdl.getInfo(args[1]);

const song = {

title: songInfo.title,

url: songInfo.video_url,

};

Необходимые данные сохраняются в song. Теперь нужно создать контракт, обеспечивающий добавление в очередь. Проверьте факт определения serverQueue (проигрывание музыки), а после отправьте сообщение о достижении результата. Если это не удалось сделать, нужно его создать и соединиться с голосовым каналом и начать играть песню.

if (!serverQueue) {

}else {

serverQueue.songs.push(song);

console.log(serverQueue.songs);

return message.channel.send(`${song.title} has been added to the queue!`);

}

В раздел serverQueue, если он пустой, добавьте трек. В случае, когда serverQueue имеет параметр null, сделайте контракт.

// Creating the contract for our queue

const queueContruct = {

textChannel: message.channel,

voiceChannel: voiceChannel,

connection: null,

songs: [],

volume: 5,

playing: true,

};

// Setting the queue using our contract

queue.set(message.guild.id, queueContruct);

// Pushing the song to our songs array

queueContruct.songs.push(song);

try {

// Here we try to join the voicechat and save our connection into our object.

var connection = await voiceChannel.join();

queueContruct.connection = connection;

// Calling the play function to start a song

play(message.guild, queueContruct.songs[0]);

} catch (err) {

// Printing the error message if the bot fails to join the voicechat

console.log(err);

queue.delete(message.guild.id);

return message.channel.send(err);

}

Проигрывание трека

Теперь нужно создать опцию play для бота Дискорд с параметрами гильдия и песня, а также проверкой объекта song.

function play(guild, song) {

const serverQueue = queue.get(guild.id);

if (!song) {

serverQueue.voiceChannel.leave();

queue.delete(guild.id);

return;

}

}

Если да, нужно уйти с голосового канала и удалить очередь.

Далее трек играет с применением URL и playStream.

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

.on(‘end’, () => {

console.log(‘Music ended!’);

// Deletes the finished song from the queue

serverQueue.songs.shift();

// Calls the play function again with the next song

play(guild, serverQueue.songs[0]);

})

.on(‘error’, error => {

console.error(error);

});

dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);

Здесь создается stream, а его URL передается адресу песни.

Пропуск трека

Здесь оформите завершение диспетчера, который был сделан в опции play. Такое действие необходимо, чтобы начал играть очередной трек.

function skip(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

if (!serverQueue) return message.channel.send(‘There is no song that I could skip!’);

serverQueue.connection.dispatcher.end();

}

Здесь проверяется, есть ли пользователь в голосовом канале, и имеется ли трек для пропуска.

Остановка

Опция stop подразумевает очистку массива song, удаления очереди и выхода из чата.

function stop(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

serverQueue.songs = [];

serverQueue.connection.dispatcher.end();

}

Полный код бота для Дискорд

const Discord = require(‘discord.js’);

const {

prefix,

token,

} = require(‘./config.json’);

const ytdl = require(‘ytdl-core’);

const client = new Discord.Client();

const queue = new Map();

client.once(‘ready’, () => {

console.log(‘Ready!’);

});

client.once(‘reconnecting’, () => {

console.log(‘Reconnecting!’);

});

client.once(‘disconnect’, () => {

console.log(‘Disconnect!’);

});

client.on(‘message’, async message => {

if (message.author.bot) return;

if (!message.content.startsWith(prefix)) return;

const serverQueue = queue.get(message.guild.id);

if (message.content.startsWith(`${prefix}play`)) {

execute(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}skip`)) {

skip(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}stop`)) {

stop(message, serverQueue);

return;

} else {

message.channel.send(‘You need to enter a valid command!’)

}

});

async function execute(message, serverQueue) {

const args = message.content.split(‘ ‘);

const voiceChannel = message.member.voiceChannel;

if (!voiceChannel) return message.channel.send(‘You need to be in a voice channel to play music!’);

const permissions = voiceChannel.permissionsFor(message.client.user);

if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) {

return message.channel.send(‘I need the permissions to join and speak in your voice channel!’);

}

const songInfo = await ytdl.getInfo(args[1]);

const song = {

title: songInfo.title,

url: songInfo.video_url,

};

if (!serverQueue) {

const queueContruct = {

textChannel: message.channel,

voiceChannel: voiceChannel,

connection: null,

songs: [],

volume: 5,

playing: true,

};

queue.set(message.guild.id, queueContruct);

queueContruct.songs.push(song);

try {

var connection = await voiceChannel.join();

queueContruct.connection = connection;

play(message.guild, queueContruct.songs[0]);

} catch (err) {

console.log(err);

queue.delete(message.guild.id);

return message.channel.send(err);

}

} else {

serverQueue.songs.push(song);

console.log(serverQueue.songs);

return message.channel.send(`${song.title} has been added to the queue!`);

}

}

function skip(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

if (!serverQueue) return message.channel.send(‘There is no song that I could skip!’);

serverQueue.connection.dispatcher.end();

}

function stop(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

serverQueue.songs = [];

serverQueue.connection.dispatcher.end();

}

function play(guild, song) {

const serverQueue = queue.get(guild.id);

if (!song) {

serverQueue.voiceChannel.leave();

queue.delete(guild.id);

return;

}

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

.on(‘end’, () => {

console.log(‘Music ended!’);

serverQueue.songs.shift();

play(guild, serverQueue.songs[0]);

})

.on(‘error’, error => {

console.error(error);

});

dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);

}

client.login(token);

Как создать бота в Дискорд на Python

Еще один способ — сделать Дискорд бота на Python. Общий алгоритм действий следующий:

  1. Установите текстовый редактор.
  2. Подготовьте Python 3.4.2+ и Pip3 (менеджер пакетов, необходимый для установки библиотек).
  3. Создайте пустой файл с названием, к примеру, chatbot.py.
  4. Откройте его с помощью текстового редактора и вставьте код. Для его написания необходимо владеть языком Python.
  5. Пример кода — gist.github.com/Tetraquark/911eb07052be10f0bb1323adb4056f86.
  6. Поменяйте значение переменной DISCORD_BOT_TOKEN, где нужно сохранить токен бота. Для получения информации перейдите по ссылке discord.com/developers/applications, выберите нужный бот Дискорд или создайте новый, а после жмите на clich to reveal, где откроется токен приложения. Занести его в переменную DISCORD_BOT_TOKEN.
  7. Сохраните файл и запустите бот Дискорд.

Для выполнения указанной выше работы необходимо обладать определенным набором знаний.

Применение Discord Bot Maker

Как вариант, можно создать бота с помощью Discord Bot Maker. Это мощный инструмент, позволяющий сделать помощника, умеющего отправлять файлы, генерировать и отправлять сообщения, манипулировать эмодзи, редактировать изображения и т. д.

Чтобы создать Дискорд-бота, сделайте следующее:

  1. Скачайте и установите утилиту.
  2. Жмите на кнопку создания бота.
  3. Установите необходимые команды.
  4. Сохраните и запустите bot для Дискорд

Процесс создания интуитивно понятен, поэтому не будем останавливаться на нем подробнее.

Итоги

Теперь вы знаете, как сделать своего бота Discord, и что потребуется для решения задачи. Для этого нужно иметь определенные навыки программирования или, как вариант, использовать Discord Bot Maker. Если у вас нет лишнего времени, лучше скачать готового помощника и пользоваться его возможностями.


Download Article


Download Article

Discord is a popular chatting program that’s highly used and favored by gamers. Users can create their own Discord channels for free and invite people to join them. Some people use Bots in Discord to keep music playing, greet new people in the channel, and so much more. This wikiHow will show you how to create a bot for Discord. You’ll need to be at least a little familiar with coding since Javascript is what makes the bot work.

  1. Image titled Create a Bot in Discord Step 1

    1

    Download Node.js from https://nodejs.org/en/download/. Node.js is a free JavaScript runtime that you’ll need to make your bot. You can pick either the Windows or macOS installer as well as which version. The LTS version is recommended for this process.

    • Ideally you should have a server OS installed on your computer Windows Server, Ubuntu Server, or macOS server. You can also host your bot on Azure, AWS, or Google Cloud.
  2. Image titled Create a Bot in Discord Step 2

    2

    Run the installer. A Windows computer just needs to click on the downloaded file to launch the installer, but a macOS computer needs to unpack the file to find the installer application. Make sure you read any and all agreements as you go through the installer.

    Advertisement

  3. Image titled Create a Bot in Discord Step 3

    3

    Create a Discord account (optional). If you don’t already have a Discord account, you sign up for one at https://discord.com/.

  4. Image titled Create a Bot in Discord Step 4

    4

    Login to your Discord account and channel. Open the Discord app on your computer and navigate to the channel you want your bot in.

  5. Advertisement

  1. Image titled Create a Bot in Discord Step 5

    1

    Go to https://discord.com/developers/applications/me in a web browser. You should be logged in already through the app, but log in again if you are prompted. In this part, you’ll be creating an app that activates the bot, so you’ll be creating an app as well as a bot.

  2. Image titled Create a Bot in Discord Step 6

    2

    Click the blue New Application button. You’ll see this to the right side of the browser. A window will pop up for your app’s name.

    • Type in the application’s name and click “Create.” You’ll want to create a name that is descriptive, like «Greeterbot» if your app bot greets people. However, «Greeterbot» will most likely trigger errors later on because it’s a popular name, so add a series of numbers after the name, like «Greeterbot38764165441.»
  3. Image titled Create a Bot in Discord Step 7

    3

    Click Bot in the left-hand menu. This is also the jigsaw puzzle piece icon.

  4. Image titled Create a Bot in Discord Step 8

    4

    Click Add Bot. This is under the “Build-A-Bot” header.

    • Click “Yes, do it!” in the pop-up to confirm your action.
    • If you get an error about the name being too popular, go to the application page and change the app name. For example, “Music Bot” was too popular, so adding a few numbers to the end of the app helped.
  5. Image titled Create a Bot in Discord Step 9

    5

    Click Click to Reveal Token. You’ll see this in the information area of your bot. When you click that text, you see a string of letters and numbers.

    • Click “Copy” to copy all that text. You can paste it on a sticky note somewhere, but make sure you have access to that code and don’t give it out to anyone. Whoever has that code can control the bot. This code will always be here if you need it.
  6. Advertisement

  1. Image titled Create a Bot in Discord Step 10

    1

    Click General Information. This is in the menu on the left.

  2. Image titled Create a Bot in Discord Step 11

    2

    Click Copy under Client ID. You’ll see this around the middle of the web page.

  3. Image titled Create a Bot in Discord Step 12

    3

  4. Image titled Create a Bot in Discord Step 13

    4

    Paste your URL into the address bar on your web browser. You’ll be taken to a page where you can assign your bot to a channel.

    • Click the drop-down box to display all your compatible channels.
    • Click “Authorize” to continue. You’ll get a confirmation that the bot was moved and that you can close the active tab.
  5. Advertisement

  1. 1

    Create a folder on your desktop for your bot code. You’ll be making files of code that will go in here.

    • This code was provided by https://www.digitaltrends.com/gaming/how-to-make-a-discord-bot/.
    • You can search the internet for bot codes you want, like ones that play music constantly. This wikiHow uses a code sample for a bot that responds to any text starting with «!»
  2. 2

    Open a text editor. You can use the default programs like Notepad for Windows or TextEdit for Mac.

  3. 3

    Type the following code:

      {
      “token”: “Your Bot Token”
      }
      
    • Make sure you enter that Bot Token number you got from the previous steps between the quotation marks in the text.
  4. 4

    Save the file as “auth.json”. Make sure the file doesn’t save with a .txt file extension.

  5. 5

    Start a new document. You can do this by either pressing Ctrl+N (Windows), or Cmd+N (Mac), or clicking “New” from the “File” tab.

  6. 6

    Type the following code:

      {
      “name”: “greeter-bot”,
      “version”: “1.0.0,
      “description”: “My First Discord Bot”,
      “main”: “bot.js”,
      “author”: “Your Name”,
      “dependencies”: {}
      }
      
    • Make sure you replace «author” name with your name. You can also change the “description” if you don’t like “My first discord bot.”
  7. 7

    Save the file as “package.json”. Make sure the file doesn’t save with a .txt file extension.

  8. 8

    Start a new document. You can do this by either pressing Ctrl+N (Windows), or Cmd+N (Mac), or clicking “New” from the “File” tab.

  9. 9

    Type your bot’s code. For example, if you want to create a bot that responds to any messages that start with «!», type the following code:

      var Discord = require('discord.io');
      var logger = require('winston');
      var auth = require('./auth.json');
      // Configure logger settings
      logger.remove(logger.transports.Console);
      logger.add(new logger.transports.Console, {
          colorize: true
      });
      logger.level = 'debug';
      // Initialize Discord Bot
      var bot = new Discord.Client({
         token: auth.token,
         autorun: true
      });
      bot.on('ready', function (evt) {
          logger.info('Connected');
          logger.info('Logged in as: ');
          logger.info(bot.username + ' - (' + bot.id + ')');
      });
      bot.on('message', function (user, userID, channelID, message, evt) {
          // Our bot needs to know if it will execute a command
          // It will listen for messages that will start with `!`
          if (message.substring(0, 1) == '!') {
              var args = message.substring(1).split(' ');
              var cmd = args[0];
             
              args = args.splice(1);
              switch(cmd) {
                  // !ping
                  case 'ping':
                      bot.sendMessage({
                          to: channelID,
                          message: 'Pong!'
                      });
                  break;
                  // Just add any case commands if you want to.
               }
           }
      });
      
  10. Image titled Create a Bot in Discord Step 14

    10

    Save the file as “bot.js”. Make sure the file doesn’t save with a .txt file extension.

    • You can close your text editor.
  11. Advertisement

  1. Image titled Create a Bot in Discord Step 15

    1

    Open a command prompt window. On Windows, you can search “Cmd” in the Windows search field in the Start Menu. On Mac, you can search Spotlight for “Command Prompt.”

  2. Image titled Create a Bot in Discord Step 16

    2

    Navigate to your bot folder on your desktop. For example, you can type cdUsersDefault DesktopDesktopDiscordBotfoldername.

  3. Image titled Create a Bot in Discord Step 17

    3

    Type npm install discord.io winston –save and press Enter. With Node.js installed, this line will automatically download the dependencies for your bot in your desktop folder.

  4. Image titled Create a Bot in Discord Step 18

    4

  5. Advertisement

  1. Image titled Create a Bot in Discord Step 19

    1

    Type node bot.js and press Enter in the command prompt. If you get an error line, you did something wrong.

  2. Image titled Create a Bot in Discord Step 20

    2

    Type “!Intro” in Discord. You’ll want to type this in the channel your bot is in. The example code provided triggers the bot to respond «Pong!» to text starting with “!”. So to test if the bot is working, type “!Intro” and wait for a response.[1]

  3. Image titled Create a Bot in Discord Step 21

    3

    Check your coding if you didn’t hear a response. If your bot didn’t respond to your «!Intro» in Discord, go through this wikiHow again and check to make sure your bot is set up correctly. Make sure:

    • Node.js installed correctly.
    • The Bot Token is entered correctly in your auth.json file.
    • You’re in the same channel as the bot.
    • The bot is on the server.
    • Your coding is correct in your auth.json, bot.js, and package.json files.
    • You downloaded all the dependencies for your bot to work using Command Prompt with Node.js installed.
  4. Advertisement

Add New Question

  • Question

    My bot says it’s offline what do I need to do?

    Josh I Guess

    Josh I Guess

    Community Answer

    Have you done the code correctly? Try redoing the code. Make sure you do «node bot.js» without the quotes when you finish the code.

  • Question

    What do I do if it says error when typing node bot.js into command prompt?

    Josh I Guess

    Josh I Guess

    Community Answer

    Have you done the code correctly? Try redoing the code. Make sure you’re typing everything right.

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

References

About This Article

Article SummaryX

1. Download and install Node.js.

2. Open the Discord app and log in.

3. Create the bot on Discord.

4. Put the bot in a Discord channel.

5. Code the bot.

6. Install bot dependincies.

7. Test the bot works.

Did this summary help you?

Thanks to all authors for creating a page that has been read 81,459 times.

Is this article up to date?

Понравилась статья? Поделить с друзьями:
  • Как написать свое ядро для сервера майнкрафт
  • Как написать свастику на клавиатуре
  • Как написать свадебную клятву невесте
  • Как написать свадебному фотографу
  • Как написать свадебное приглашение