Итак, у вас есть этот сервер Discord, и это место для вас. Единственная проблема заключается в том, что некоторые пользователи становятся немного шумными или грубыми, и вам нужен способ помочь справиться с этим, не сидеть там 24/7 и контролировать это.
Вам нужен бот, чтобы помочь. Конечно, есть места, где можно получить готовых ботов, но ничто не сравнится с созданием собственного с точки зрения контроля, который вы можете иметь над ним. Не говоря уже о возможности запрограммировать эти три закона и помочь предотвратить робопокалипсис.
Здорово. Решено. Давайте создадим бота, который не захватит вселенную ... только ваш сервер раздора.
Мы будем использовать Node.js, а пока рассмотрим основы настройки для создания функционального бота. Мы добавим классный код «займись своим сервером» после того, как все будет готово.
Регистрация приложения в Discord
Прежде чем мы сможем сделать что-нибудь еще, нам нужно будет зайти на портал разработчиков Discord и рассказать ему о нашем новом замечательном боте.
Попасть на портал разработчиков можно здесь: https://discord.com/developers/applications
Оказавшись там и войдя в свою учетную запись Discord, вы захотите нажать кнопку «Новое приложение» и дать своему приложению имя.
Далее вы попадете на экран настройки приложения.
Вы можете загрузить изображение профиля для своего приложения, а также добавить описание. Через минуту нам понадобится указанный здесь идентификатор клиента, поэтому нажмите кнопку «Копировать» под ним. Но сначала….
Откройте меню Бот слева. Нам нужно будет сообщить Discord, что в нашем приложении будет бот, создав пользователя-бота. Это позволит приложению взаимодействовать с текстовыми сообщениями и всем остальным, с чем вы хотите, чтобы оно могло взаимодействовать.
Нажмите «Добавить бота» и примите условия.
Ура. Появился дикий бот.
Убедитесь, что вы установили логичное имя пользователя. Он будет отображаться на вашем сервере с этим именем пользователя.
Вскоре нам также понадобится этот токен, но перед этим нам нужно авторизовать новое приложение, используя клиентский токен, полученный ранее. Для этого нам нужно перейти по другому URL-адресу Discord: «https://discord.com/oauth2/authorize?client_id=************************************************************************ ********************************
Замените <put your app client id here>
идентификатором клиента самого приложения, который мы скопировали ранее, а затем вставьте его в новую вкладку браузера. Убедитесь, что вы вошли в систему, выберите сервер, на котором будет авторизован этот бот, и нажмите эту кнопку.
Кнопка авторизации то есть.
После этого, если вы войдете в Discord и откроете свой сервер, вы должны увидеть бота там как пользователя и в автономном режиме.
На этом этапе я настоятельно рекомендую вам настроить бота с подходящей ролью и разрешениями на то, что вы хотите, чтобы он мог делать. Это зависит от вас, поскольку это очень зависит от настроек вашего сервера.
Но бот не в сети ... как это исправить?
На кодирование
Чтобы бот действительно присутствовал на вашем сервере, нам нужно написать код Node.js, чтобы он ожил.
Создайте где-нибудь папку в своей системе и назовите ее чем-нибудь супер креативным, например DiscordBot или MyAwesomeBot… решать вам.
Внутри папки создайте файл с именем: config.json
Этот файл будет содержать токен бота из приложения, которое мы настроили ранее, поэтому вернитесь к нему, перейдите в меню бота и скопируйте токен оттуда, чтобы мы могли добавить его в наш файл конфигурации следующим образом.
{ "token" : "thisisverymuchafaketoken.please.donotusethistokeninyourapp!", "prefix" : "+" }
Как видите, это простой файл json, содержащий токен для пользователя-бота, а также префикс, который мы будем использовать в коде для идентификации команды для бота.
Давайте также создадим файл JavaScript с именем: bot.js
Начните с загрузки библиотеки Discord.
const Discord = require("discord.js");
Мы будем использовать версию 12, но нам не нужно указывать это здесь.
Затем нам нужно создать клиент Discord с использованием этой библиотеки и загрузить файл конфигурации json, который мы создали несколько минут назад.
const client = new Discord.Client(); const config = require("./config.json"); // config.token contains the bot's token // config.prefix contains the message prefix.
Мы сможем получить доступ к этим значениям из файла конфигурации, используя config.token и config.prefix. По мере развития бота вы можете добавлять сюда больше вещей по мере необходимости.
Далее нам нужно обработать событие «готово». Эта функция будет запущена, когда бот запустится и успешно войдет в систему. Мы будем использовать это, чтобы зарегистрировать сообщение об успешном завершении на консоли и установить действие, которое будет отображаться против пользователя-бота в Discord.
client.on("ready", () => { // If the bot starts and logs in. console.log('Bot has started'); client.user.setActivity('Totally not plotting world domination'); });
Как видите, мы установили действие, которое отображается под именем бота в Discord, как «полностью не замышлять мировое господство». Вы можете поместить сюда все, что хотите, или, в качестве дополнительной награды, выбрать случайный выбор из списка действий, который вы определяете.
Теперь мы подошли к сути нашего очень простого бота, обработав событие «message». Это происходит всякий раз, когда бот видит сообщение, будь то из канала или DM.
client.on("message", async message => {
Мы начнем с игнорирования других ботов, включая самого себя. Это не только поможет им не вступить в сговор, чтобы начать робопокалипсис, но и не заговорит с самим собой и полностью захватит канал.
if(message.author.bot) return;
На данный момент мы также скажем ему игнорировать все, что не начинается с префикса, который мы установили в файле конфигурации. Это то, как мы будем отправлять команды боту, а также значит, что он (пока) не будет все подслушивать.
if(!message.content.startsWith(config.prefix)) return;
Это будет означать, что наш бот будет игнорировать все, что не начинается с + (или того, что вы задали для префикса).
Далее, поскольку мы игнорируем все, что не имеет нашего префикса. Давайте разделим перехваченное сообщение на команду и аргументы.
const args = message.content.slice(config.prefix.length).trim().split(/ +/g); const command = args.shift().toLowerCase();
Итак, если мы отправим сообщение типа: + say Hello World!
Тогда в этот момент команда будет: + say, а аргументы будут массивом, содержащим каждое другое слово. ['Привет мир!']
Пока мы не достигли многого, поэтому давайте добавим здесь некоторую обработку для обработки полученных команд. Если мы вернемся к команде + say, о которой я упоминал выше, давайте реализуем бота, говорящего то, что ему велено.
if(command === "say") { /* To get the message for the bot to send, we will join the `args` back into a string with spaces: */ const sayMessage = args.join(" "); // Then delete the command message from the user that sent it message.delete().catch(O_o=>{}); // And we get the bot to say the thing: message.channel.send(sayMessage); }
Мы проигнорируем команду и объединим все «аргументы» обратно в строку. В приведенном выше случае мы получим "Hello World!" как сообщение.
Затем мы удаляем сообщение пользователя, отправившего команду, чтобы его никто не видел. Муах-ха-ха-ха-ха.
Затем мы заставим бота отправлять сообщение.
Теперь закройте функцию обработчика сообщений.
});
И последнее, но не менее важное (для кода). Мы скажем боту войти в Discord.
// Login to discord with the secret bot user token client.login(config.token);
Вот суть кода: https://gist.github.com/apocsurvivor/c5ca606952e89069d0d596e265acb3ff
Запуск бота
Перед запуском бота необходимо сделать еще пару вещей.
Откройте терминал в папке, в которой мы поместили код. Нам нужно создать Node.js project.json и загрузить необходимые зависимости.
Выполните команду:
npm init -y
Это должно создать project.json в правильном формате. Вы можете продолжить и отредактировать этот файл по мере необходимости, чтобы добавить вас в качестве автора, установить номер версии и т. Д.
Затем нам нужно установить библиотеку Discord, которую мы сначала включили в код. Убедившись, что вы сохранили все изменения в project.json, выполните следующее:
npm install discord -save
Это должно установить библиотеку Discord. Если ошибок нет, вы можете запустить своего бота, запустив:
узел bot.js
Вы должны увидеть подтверждающее сообщение, зарегистрированное в терминале, и если вы посмотрите в разногласиях, бот должен отображаться как подключенный к сети с тегом активности «Совершенно не замышлять мировое господство» или как бы вы это ни установили.
Если все в порядке, проверьте его, отправив ему команду:
+say Hello World!
Если все пойдет по плану, ваше сообщение должно исчезнуть, и бот должен сказать «Hello World!»
Если ваше сообщение не исчезает, убедитесь, что у пользователя-бота установлена роль и есть разрешение на удаление сообщений.
Что дальше?
В следующий раз мы рассмотрим, как расширить возможности этого бота для определения языка, который мы не хотим использовать, чтобы он мог поддерживать разговоры на каналах цивилизованно. Если у вас есть другие предложения, дайте мне знать. Мы могли бы добавить еще несколько забавных мелочей.
Конечно, вы можете двигаться дальше и реализовывать функции, которые хотите для своего бота, по своему усмотрению.