Вот некоторые примечания по созданию пользовательского проекта бота Discord в React.js.

Создание бота Discord с нуля — полезный опыт. Это отличное место для тестирования кода и быстрого просмотра его в действии. Большинство проектов Discord написаны на JavaScript, поэтому есть много отправных точек, если вы работаете с React.js.

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

Команды бота

Вы можете создать практически любую команду для выполнения ботом. Здесь вы можете удариться о стену. Если вы не знаете, с чего начать с именования команд и того, как бот будет реагировать на указанные команды, не торопитесь. Почему может быть полезно включать команды как объекты с парами ключ-значение? Это позволяет вашему боту использовать ваши команды. Когда эта команда вводится вашим пользователем, ваше приложение знает, где искать, чтобы выполнить то, что хочет команда. Смотрит на ключ.

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

const prefix = '!';

Затем вы включаете объект при экспорте в конец файла, который включает ваши команды:

module.exports = { botIntents, prefix, commands };

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

Синтаксис бота

Хорошо знать, о чем вы говорите, когда вас спрашивают, что означает ваш код. Эти строки кода дадут вам хорошее представление о функции async, включая await в JavaScript, о разнице между module.exports и export default и о том, что такое файл package.json.

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

// App.js
const getLastMsgs = async (msg) => {
    const cheers = await msg.channel.messages.fetch({ limit: 10 });
    const lastTenMsgs = cheers.map((message) => {
        return message.content;
    })
}

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

const reply = await getLastMsgs(msg);

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

module.exports и экспорт по умолчанию

// default.js
const botIntents = [
    DIRECT_MESSAGES,
    GUILD_MESSAGES,
    GUILDS,
  ];
  
  const commands = {
    verify: 'verify',
    lastMsgs: 'last-messages',
  };
  const prefix = '!';
  module.exports = { botIntents, prefix, commands };

Последняя строка кода в приведенном выше отрывке делает объект botIntents, префиксную переменную и объект команд доступными для остальной части приложения, что позволяет вам использовать эти объекты в других файлах. Это отличается от export default, к которому вы, возможно, привыкли.

Как это соотносится с export default?

Это полезная статья для понимания двух. Используя module.exports, вы должны потребовать файл, в котором вы записали эти экспорты, в файл, который должен их использовать. С помощью export default вы импортируете то, что вам нужно, в другие файлы. export default позволяет нам экспортировать весь класс или функцию в файл, что не ограничивает функции, которые мы можем использовать, как это делает module.exports. Лучше использовать module.exports, когда у вас есть несколько функций, которые вы хотите экспортировать, а не весь класс или функцию.

Файл package.json

// package.json
{
  "dependencies": {
    "discord.js": "^13.3.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.15"
  },
  "scripts": {
    "app": "nodemon app",
    "start": "node app"
  },
  "name": "*bot name*",
  "version": "1.0.0",
  "main": "App.js",
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": ""
}

Package.json — это сердце вашего проекта Node. Этот файл содержит метаданные, необходимые для работы вашего проекта. Он содержит четкие определения функциональных атрибутов вашего проекта, которые npm использует для установки зависимостей, запуска имеющихся у вас сценариев и определения точки входа пакета. Это должен быть настоящий JSON, а не объект JavaScript. Вы можете найти больше информации о файле package.json здесь.

URL конечной точки взаимодействия

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

Если вы хотите, чтобы бот работал как можно лучше, это может вас заинтересовать. Что такое конечная точка взаимодействия? Это поможет вам справиться с командами косой черты. Это будет полезно для дальнейшей итерации, но вам не нужно использовать это сейчас.

Следующие шаги

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

Вы знаете, что делать дальше? Уделите время разъяснению шагов.

Прощальные вопросы

В каком направлении будет работать бот после того, как вы получите доступ к API?

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

Что вы можете сделать в это время?

Настройте каналы, когда бот будет завершен. Каналы будут создавать опыт. Скорее всего, в вашем сообществе сейчас ограниченное количество пользователей, поэтому взаимодействия не будет слишком много. Никто не хочет этого делать, но вы настроили правила, FAQ, поддержку и канал объявлений. Или вы можете решить не делать этого. Биоканал, который идет в ногу с развитием проекта, — хорошая идея. Все идет.

Какой урок мы извлекли?

Ваш будет другим. Поделись со всеми. Там много ресурсов. Чем больше времени вы можете выделить на проект, тем легче будет найти то, что вам нужно. Это просто игра для решения проблем. Единственный способ стать лучше в решении проблем — решать проблемы.

Как вы напишете функцию, которая срабатывает, когда пользователь вводит команду «!verify»?

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

Собираем все вместе

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

Создайте современного бота Discord с нуля, Элайджа Триллионз

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

Экспорт заявления в JavaScript