Рубрики
Без рубрики

Создание бота разногласий с Node.js и reft.it

Пошаговое руководство по созданию раздора в чате с Node.js. Мы показываем полный процесс настройки для бота раздора, объясните каждую строку кода и покажу, как легко развернуть бот на инфраструктуре REP.

Автор оригинала: Gareth Dwyer.

В этом руководстве мы будем использовать reft.it и node.js, чтобы построить раздорный чатбот. Бот сможет присоединиться к серверу раздора и отвечать на сообщения, отправленные людьми.

Если вам не нравится JavaScript, есть также версия этого урока Python.

Вам будет легче следовать, если у вас есть некоторые знания JavaScript, и вы должны были использовать DiscoD или аналогичное приложение, такое как Skype или Telegram ранее. Мы не будем охватывать самые основы Node.js, но мы подробно объясним каждую строку кода, поэтому, если у вас есть какой-либо опыт работы с программированием, вы должны быть в состоянии следовать.

Обзор и требования

Мы будем делать все наше кодирование через reft.it Web IDE и прохожим наш бот с refl.it, поэтому вам не нужно будет устанавливать какое-либо дополнительное программное обеспечение на вашем компьютере. Для этого учебника вам нужно будет создать Раздор Учетная запись (если у вас уже есть один, вы можете пропустить это). Есть инструкции для того, как это сделать в следующем разделе.

В этом руководстве мы будем охватывать:

  • Создание приложения и пользователя бота в вашей учетной записи
  • Создание сервера на раздоре
  • Добавление вашего бота на свой SucordOd Server

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

Создание бота в раздоре и получение токена

Вы можете подписаться на бесплатный аккаунт на Страница Rescord Register и может скачать один из своих настольных или мобильных приложений от Главная страница раздора Отказ Вы также можете использовать DiscoD в браузере.

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

** Изображение: 1 ** * Создание нового приложения раздора *

Заполните имя для бота и выберите «Создать».

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

** Изображение: 2 ** * Запишите свой идентификатор клиента *

Вы также можете переименовать приложение и предоставить описание для вашего бота в этот момент и нажать «Сохранить изменения».

Теперь вы создали приложение раздора. Следующим шагом является добавление бота в это приложение, поэтому отправляйтесь на вкладку «BOT», используя меню слева и нажмите кнопку «Добавить бот», как указано ниже. Нажмите «Да, сделайте это», когда раздор спрашивает, вы уверены ли вы принести новый бот в жизнь.

** Изображение: 3 ** * Добавление бота в наше приложение раздора *

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

** Изображение: 4 ** * Создание токена для нашего бота раздора *

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

Создание сервера раздора

Если у вас нет сервера DiscoD, чтобы добавить свой бот, вы можете создать один, либо открывая приложение Desktop Rescord, которое вы загрузите ранее или возвращаетесь на домашнюю страницу Rossand в вашем браузере. Нажмите значок «+», указанный восклицательным значком, как показано ниже, для создания сервера.

** Изображение: 5 ** * Создание Server Server *

Нажмите «Создать сервер» на экране, который следует, а затем дайте своему серверу имя. После того, как сервер работает и работает, вы можете общаться с собой, или пригласить некоторых друзей пообщаться с вами. Вскоре мы пригласим нашего бота общаться с нами.

Добавление бота раздора на ваш SubdOd Server

Наш Bot Rescord – это все еще просто оболочка на этом этапе, поскольку мы не написали ни один код, чтобы позволить ему ничего делать, но давайте в любом случае, и добавьте его на наш сервер раздора. Чтобы добавить бот на свой сервер, вам понадобится идентификатор клиента с страницы «Общая информация», на которой мы рассмотрели ранее, когда мы создали наше REFLBOTAPLICATION (IE. ID клиента, а не секретный токен бота).

Создайте URL, который выглядит следующим образом, но используя идентификатор вашего клиента вместо моего в конце:

https://discordapp.com/api/oauth2/authorize?scope=bot&client_id=746269162917331028

Посетите URL, который вы создали в своем веб-браузере, и вы увидите страницу, аналогичную следующему, где вы можете выбрать, какой сервер добавить свой бот.

** Изображение: 6 ** * Авторизация нашего бота присоединиться к нашему серверу *

Выберите сервер, который мы создали на шаге до этого и нажмите кнопку «Авторизация». После завершения CAPTCHA вы должны получить уведомление о несоответствии в приложении, рассказывая вам, что ваш бот присоединился к вашему серверу.

Теперь мы можем добраться до забавной части построения мозга для нашего бота!

Создание замены и установки наших зависимостей

Первое, что нам нужно сделать, это создать Node.js reply, чтобы написать код для нашего бота раздора. Над reft.it Создайте новую замену, выбирая «Node.js» как ваш язык.

Нам не нужно изобретать колесо, так как есть уже отличный узел обертки для API раздора Bot api под названием Discord.js Отказ Обычно мы бы установили эту стороннюю библиотеку через NPM , но потому что мы используем reft.it, мы можем пропустить установку. Наша запись будет автоматически потянуть все зависимости.

По умолчанию index.js Файл, который включен в ваш новый REF, добавьте следующую строку кода.

const Discord = require('discord.js');

Нажмите кнопку «Запустить», и вы должны увидеть REPL.IT Установка библиотеки раздора в выходной панели справа, так как на изображении ниже.

** Изображение: 7 ** * Установка Discord.js в нашей репре. *

Наш бот почти готов к работе – но нам все еще нужно подключить наш секретный токен. Это разрешит нашему коду для контроля нашего бота.

Настройка авторизации для нашего бота

По умолчанию REPL Code является общедоступным. Это здорово, так как оно поощряет сотрудничество и обучение, но мы должны быть осторожны, чтобы не поделиться нашим секретным токеном бота (что дает всем, кто имеет доступ к нему полный контроль над нашим ботом).

Охватить проблему необходимости дать наше Код Доступ к токену, позволяя другим доступа к нашему коду, но не Наш токен, мы будем использовать Переменные среды Отказ На нормальной машине мы установили их непосредственно в нашей операционной системе, но используя reft.it у нас нет доступа к этому. Reft.it позволяет нам устанавливать секреты в переменных среда через специальные .env файл.

Во-первых, нам нужно создать новый файл, называемый именно .env Отказ Выберите «Добавить файл» и назовите этот файл .env Отказ Важно не оставлять Отказ с начала. Откройте этот новый файл и добавьте переменную, чтобы определить секретный токен вашего бота (обратите внимание, что это второй токен, который мы получили при настройке бота – отличается от идентификатора клиента, который мы использовали для добавления нашего бота на наш сервер). Это должно выглядеть что-то вроде:

DISCORD_BOT_SECRET=NDcUN5T32zcTjMYOM0Y1MTUy.Dk7JBw.ihrTSAO1GKHZSonqvuhtwta16WU

Вам нужно:

  • Заменить Токен ниже (после того, как = знак) с токеном, который раздор дал вам при создании собственного бота.
  • Будьте осторожны о Интервал Отказ Если вы положите место на обеих сторон = В вашем .env Файл, эти пространства будут частью имена переменной или значения, поэтому убедитесь, что у вас нет пробелов вокруг = или в конце линии.
  • Запустите код еще раз. Иногда вам нужно будет обновить всю страницу, чтобы убедиться, что ваши переменные среды успешно загружены.

На изображении ниже мы подчеркнули кнопку «Добавить файл», новый файл ( .env ) и как определить секретный токен для использования нашего бота.

** Изображение: 8 ** * Создание нашего файла .env *

Давайте сделаем ботом раздора, который повторяет все, что мы говорим, но в обратном направлении. Мы можем сделать это только в нескольких строках кода. В вашем index.js Файл, добавьте следующее:

const Discord = require('discord.js');
const client = new Discord.Client();
const token = process.env.DISCORD_BOT_SECRET;

client.on('ready', () => {
  console.log("I'm in");
  console.log(client.user.username);
});

client.on('message', msg => {
    if (msg.author.id != client.user.id) {
        msg.channel.send(msg.content.split('').reverse().join(''));
    }
});

client.login(token);

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

  • Линия 1 это то, что мы имели ранее. Эта линия оба сообщает reft.it устанавливать третьей сторонней библиотеке и приносит его в этот файл, чтобы мы могли его использовать.
  • В линия 2 мы создаем раздор Клиент Отказ Мы будем использовать этот клиент для отправки команд в раздор Сервер Чтобы контролировать наш бот и отправить его команды.
  • В линия 3 Мы извлекаем наш секретный токен из переменных среды (которые reft.it наборы из наших .env file).
  • В Линия 5 мы определяем событие Для нашего клиента, который определяет, как наш бот должен реагировать на событие «Готовое». Раздор бот будет работать асинхронно , что может быть немного запутанным, если вы используете для запуска стандартного синхронного кода. Мы не будем в глубине асинхронного кодирования здесь, но если вы заинтересованы в том, что это такое и почему он используется, есть хорошее руководство по адресу RisingStack Отказ Короче, вместо того, чтобы запустить код в нашем файле сверху вниз, мы будем запускать кусочки кода в ответ на определенные события.
  • В Линии 6-8 Определим, как наш бот должен отвечать на «готовое» событие, которое уволено, когда наш бот успешно присоединяется к серверу. Мы поручаем наш бот выводить некоторые информационные серверные стороны (то есть это будет отображаться в нашем выходе ref, но не отправлено в качестве сообщения через раздор). Мы распечатаем простой Я в Сообщение, чтобы увидеть, что бот есть и распечатать имя пользователя нашего бота (если вы запускаете несколько ботов, это облегчает работу, кто делает то, что).
  • Линии 10-14 Похоже, но вместо того, чтобы ответить на «готовое» событие, мы говорим нашим ботам, как обрабатывать новые сообщения. Линия 11 Говорит, что мы только хотим ответить на сообщения, которые не от нас (в противном случае наш бот продолжит отвечать на себя – вы можете удалить эту строку, чтобы увидеть, почему это проблема), а также линия 12 Говорит, что мы отправим новое сообщение на тот же канал, где мы получили сообщение ( msg.channel ) и контент, который мы отправим, будет то же самое сообщение, которое мы получили, но в обратном направлении. Чтобы изменить строку, мы разделяем ее на его отдельных символов, обратитесь к полученному массиву, а затем снова присоединяйтесь к ней снова в строку.

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

Нажмите кнопку Большой зеленый «Запустить» снова, и вы должны увидеть, как ваш бот сообщает, что успешный канал присоединяется к выводу ref.

** Изображение: 9 ** * Отправить вывод, показывающий канал Присоединиться *

Открытый раздор, а изнутри сервера мы создали ранее, выберите свое возобновление с панели на правой части экрана.

.

** Изображение: 10 ** * reft bot active *

Как только вы выбрали это, вы сможете отправить сообщение (набрав в поле, выделенный ниже) и посмотрите, как ваш бот отвечает!

.

** Изображение: 11 ** * Отправить сообщение вашему боту *

Бот отвечает каждый раз, обращая текст, который мы вводим.

.

** Изображение: 12 ** * Наш бот может говорить! *

Держать наш бот живым

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

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

Создайте новый файл в вашем проекте под названием stef_alive.js и добавьте следующий код:

var http = require('http');

http.createServer(function (req, res) {
  res.write("I'm alive");
  res.end();
}).listen(8080);

Мы не будем понимать это подробно, так как это не в центре нашего бота, но здесь мы запускаем веб-сервер, который вернется «Я жив», если кто-то посещает его.

В нашем index.js Файл, нам нужно добавить оператор нужды для этого сервера в верхней части. Добавьте следующую строку рядом с верхней частью index.js Отказ

const keep_alive = require('./keep_alive.js')

После этого еще раз ударил зеленую кнопку «Запустить», вы должны увидеть некоторые изменения в вашей репре. Для одного вы увидите новую панель в правом верхнем углу, которая показывает веб-выход с вашего сервера. Мы видим, что посещение нашего reft теперь возвращает базовую веб-страницу, показывающую строку «Я жив», которую мы сказали нашим веб-серверу, чтобы вернуться по умолчанию.

** Изображение: 13 ** * Запуск сервера узла на заднем плане *

Теперь ваш бот останется в живых даже после закрытия вашего браузера или выключение вашей машины для разработки. REP все равно будет убирать свой сервер и убить свой бот после одного часа бездействия, поэтому, если вы не использовали свой бот на некоторое время, вам придется войти в REPL и запустить бот снова. Кроме того, вы можете настроить стороннюю (бесплатно!) Сервис, как RoomTime Robot Отказ Robot Robot robot закрепляет ваш сайт каждые 5 минут, чтобы убедиться, что он все еще работает – обычно, чтобы уведомить вас о неожиданных простоях, но в этом случае постоянные пинги имеют побочный эффект сохранения нашей reflive, так как он никогда не пойдет больше часа без получение любой деятельности. Обратите внимание, что вам нужно выбрать опцию HTTP вместо опции ping при настройке робота безотказной работы, как reft.it требует регулярных http-запросов, чтобы сохранить свой чатбот.

Выложить и расширение нашего базового бота

Это не очень полезный бот, как есть, но возможности ограничены только вашим творчеством сейчас! Вы можете получить свой бот вход от пользователя, обрабатывать вход и отвечать любым способом вы выбора. На самом деле, с основным входом и выходом, которые мы продемонстрировали, у нас есть большинство компонентов любого современного компьютера, все из которых основаны на Архитектура фон Неймана (Мы могли бы легко добавить пропущенную память, имея наш бот.

Если вы соблюдате в этом руководстве, вы будете иметь свой собственный базовый rep-бот, чтобы играть и продлить. Если бы вы просто читали, вы можете легко вилить мой бот в https://repl.it/@garethdwyer1/discord-bot-node И продлить его, как вы хотите (вам нужно добавить свой собственный токен и воссоздать файл .env файл еще). Счастливого взлома!

Если вы застряли для идей, почему бы не связать свой раздорный бот к Twitch API Чтобы получить уведомление, когда ваши любимые стримеры онлайн, или постройте Текстовое приключение Отказ

В следующем Учебное пособие Мы смотрим на создание нашего собственного основного веб-приложения, используя Django. Этот учебник также познакомит вас с HTML, JavaScript и jQuery и поможет вам добраться до точки, где вы можете начать создавать собственные пользовательские веб-приложения. Вы также можете найти более учебные пособия, как этот здесь Отказ