Добавьте ИИ на свой сервер Discord

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

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

В этом уроке мы создадим гениального бота Discord, который сможет отвечать на сложные вопросы и выполнять полезные задачи. Для создания этого бота мы будем использовать Node.js, Discord.js и API OpenAI для GPT-3, одной из самых больших и умных нейронных сетей, когда-либо обученных.

Итак, без лишних слов, давайте начнем и повеселимся с искусственным интеллектом!

Обновление: тем временем в Discord API и Discord.js были внесены критические изменения. Найдите обновленный код для bot.js в конце этого руководства.

Что вам понадобится (предварительные требования)

Для создания нашего проекта вам понадобится пара аккаунтов и установленное необходимое программное обеспечение, а именно:

Счета:

  • Бета-аккаунт OpenAI (регистрация здесь)
  • Аккаунт Discord (скачать и зарегистрироваться здесь)

Программное обеспечение устанавливает:

  • Node.js (скачать и установить отсюда)
  • VS Code (скачать и установить отсюда). Если у вас еще нет редактора кода

Подготовка раздора

Шаг 1. Войдите в Discord и создайте сервер

Если у вас еще нет. Имейте в виду, что вы должны владеть сервером или знать кого-то с правами на добавление учетной записи бота на более позднем этапе. Вы создаете новый сервер, щелкнув значок «+» в левом боковом меню.

Шаг 2. Добавьте новое приложение для разработчиков

Перейдите на https://discord.com/developers/applications и нажмите кнопку Новое приложение в правом верхнем углу, чтобы создать новое приложение.

Шаг 3. Дайте приложению имя

Поставьте лайк «AiBot» и нажмите «Создать».

Шаг 4. Создайте бота

Перейдите в раздел «Бот» в левом боковом меню и нажмите «Добавить бота» в правой части экрана.

Шаг 5. Создайте токен бота

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

Шаг 6. Установите область действия и разрешения для бота.

Перейдите в раздел OAuth2 ›Генератор URL в меню настроек.

Установите область действия на «бот» и установите разрешения «Чтение сообщений/Просмотр каналов» и «Отправка сообщений». Это позволит боту читать и писать сообщения в чате сервера.

Шаг 7. Скопируйте URL-адрес приглашения и вставьте его в браузер

Прокрутите вниз и найдите «Сгенерированный URL». Это будет выглядеть примерно так:

https://discord.com/api/oauth2/authorize?client_id={YOUR_CLIENT_ID}&permissions=3072&scope=bot

Вставьте этот URL-адрес в строку поиска вашего браузера. Выберите сервер, на котором хотите авторизовать бота, и нажмите «Далее» («Weiter»).

Примите необходимые разрешения и завершите, нажав «Авторизовать».

Шаг 8. Приветствуем только что созданного бота на сервере!

Закройте вкладку и вернитесь на свой сервер. Вы найдете своего бота среди участников сервера, если все прошло хорошо.

Оживите робота с искусственным интеллектом

Теперь, когда бот виден на нашем сервере, давайте заставим его что-то делать с кодом.

Шаг 9. Инициализируйте новый проект

Создайте новую папку и назовите ее, например, «aiBot» в удобном для вас месте на компьютере. Я создал свой на рабочем столе.

Теперь откройте приложение VSCode и только что созданную папку в разделе «Файл» > «Открыть папку».

Теперь в строке меню Терминал › Новый терминал откройте новый терминал. Новый терминал должен появиться снизу.

В терминале инициализируйте новое приложение Node.js командой:

npm init -y

Затем нажмите ввод. В проводнике слева вы увидите, что выполнение команды создало новый файл package.json.

Шаг 10. Создайте новый файл, содержащий код бота

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

Нажмите на значок «Новый файл», чтобы создать новый скрипт Node. Затем назовите файл bot.js и напишите в нем какой-нибудь код hello world. Не забудьте сохранить.

Затем перейдите к файлу package.json и отредактируйте его следующим образом:

Теперь вы можете выполнить команду:

npm start

В терминале должно быть напечатано «Hello AI bot».

Шаг 11. Установите зависимости Discord.js

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

В терминале запустите:

npm install discord.js

Это установит библиотеку Discord.js для простого взаимодействия с API Discord. Если вы получаете только предупреждения, проблем быть не должно. Однако, если есть ошибки, поищите решения в Интернете.

Шаг 12. Напишите код, который оживит вашего ИИ-бота

Откройте файл bot.js. Там напишите следующий код:

Замените <YOUR_SAVED_BOT_TOKEN> токеном, который вы сохранили для последующего использования на шаге 5 этого руководства, и поместите его в кавычки. Затем сохраните файл.

Этот токен никому нельзя передавать, поэтому не отправляйте код для этого руководства напрямую на GitHub. Существует возможность использовать пакет «dotenv» в сочетании с файлом «.gitignore» для безопасного хранения вашего токена, но в этом руководстве я хотел сосредоточиться на простоте, а не на ИТ-безопасности.

Шаг 13. Он (а) запущен!

Запустите следующую команду в терминале и посмотрите на свой сервер Discord. Теперь бот должен появиться в сети.

npm start

Устранение неполадок. Если вы получаете сообщение об ошибке типа «Ошибка: не удается найти модуль ‘node:events’», убедитесь, что у вас установлена ​​версия Node.js выше версии 16.6.0. Вы можете проверить текущую версию Node с помощью команды:

node -v

Если ваша версия ниже версии 16.6.0, перейдите на сайт Node.js и установите более новую версию. Вы всегда можете закрыть команду, которая застряла в терминале, используя:

[Ctrl + C] (on Windows) or [Cmd + C] on MacOS

Попробуйте повторно запустить команду «npm start» и снова проверьте свой сервер Discord. Теперь вы должны увидеть, что ваш ИИ-бот находится в сети!

Шаг 14. Заставьте бота ИИ отвечать на сообщения на сервере

Отредактируйте файл bot.js, указав следующий код для ответа на сообщения, содержащие восклицательный знак ("!") в качестве первого символа.

Сохраните изменения. Перезапустите приложение, нажав «Ctrl + C» в терминале и снова запустив «npm start».

Теперь отправьте сообщение с восклицательным знаком в качестве первого символа на сервер. Теперь ИИ-бот должен отвечать «Привет от ИИ-бота». Он не должен отвечать на сообщения, не имеющие требуемого формата.

Подготовьте OpenAI GPT-3

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

Шаг 15. Получите токен OpenAI API

Перейдите на https://beta.openai.com/account/api-keys. На момент создания этого руководства служба GPT-3 все еще находилась в стадии бета-тестирования. Если вы будете следовать инструкциям позже, указанный выше URL-адрес может уже измениться. Если это так, войдите в свою учетную запись OpenAI и перейдите в раздел Личные в правом верхнем углу веб-сайта. Оказавшись там, нажмите Личные и выберите параметр, например Просмотреть ключи API.

Там вы найдете такой раздел:

Нажмите «Показать» и сохраните ключ API в безопасном месте. Опять же… вы никогда не должны делиться этими ключами API с кем-либо или загружать их на свой GitHub. Если секретного ключа еще нет, нажмите «Создать новый секретный ключ», чтобы создать новый ключ API.

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

Подключиться к OpenAI GPT-3

Теперь, когда у вас есть необходимый токен с сайта OpenAI, давайте напишем код для взаимодействия с GPT-3.

Шаг 16. Установите библиотеку OpenAI

Перейдите на VSCode. Остановите бота, если он в данный момент запущен, набрав Ctrl + C в терминале.

Теперь установите библиотеку OpenAI для Node.js с помощью следующей команды в терминале:

npm install openai

Шаг 17. Создайте скрипт для взаимодействия с GPT-3

В VSCode создайте новый файл с именем ai.js.

Теперь вставьте следующий код внутрь и замените часть <YOUR_OPENAI_API_KEY> своим токеном API из шага 15 и обязательно поместите его в двойные кавычки.

Шаг 18. Проверьте подключение к GPT3 OpenAI

Сохраните файл и перейдите к терминалу. Там выполните следующую команду:

node ai.js

Если все сработало правильно, вы должны увидеть ответ от ИИ, напечатанный на терминале.

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

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

Шаг 19. Подключите бота Discord к GPT-3

Перейдите к вашему файлу ai.js. Там удалите пример вызова функции «аск» и экспортируйте функцию, используя module.exports. Также удалите лог консоли и верните ответ в функции «спросить».

Теперь перейдите к файлу bot.js и примените следующие изменения:

Не забудьте сохранить изменения. Теперь, в последний раз, остановите работу вашего бота с помощью Ctrl + C и перезапустите его с помощью:

npm start

Затем зайдите на свой сервер Discord и проверьте, все ли работает нормально. Напишите сообщение с вопросом или заданием в чат, поставив в начале восклицательный знак.

Поздравляем!

Вы сделали это! Вы создали своего первого ИИ-бота Discord, используя Node.js, Discord.js и API OpenAI. Теперь вы можете похвастаться своим ботом перед друзьями или просто задать им интересующие вас вопросы!

Надеюсь, вам было интересно следовать этому (длинному) уроку! Если вы столкнетесь с какими-либо проблемами или ошибками в коде, не стесняйтесь обращаться ко мне.

Если вам понравился этот урок, я также буду рад любому отзыву с вашей стороны! Это дает мне энергию для создания новых руководств, подобных этому! :)

Ваше здоровье!

Обновлять

Тем временем Discord API и Discord.js были обновлены, что привело к критическим изменениям. Если ваш бот Discord не отвечает, выполните следующие действия:

Обновите дискорд.js до более новой версии:

Чтобы получить версию, которую я тестировал, удалите discord.js с помощью npm uninstall discord.js, а затем запустите npm install [email protected].

Включить намерение привилегированного шлюза:

На портале разработчиков Discord перейдите в раздел: Приложения ↦ Настройки ↦ Бот ↦ Намерения привилегированного шлюза и установите флаг намерения содержимого сообщения. В противном случае вы не будете получать содержимое сообщений, отправленных на сервер.

Обновите код bot.js:

//in bot.js

const { ask } = require("./ai.js"); //import the "ask" function from the "ai.js" file
const { Client, Events, GatewayIntentBits } = require('discord.js'); //v14.6.0
const token = "<YOUR_BOT_TOKEN>";

// Create a new client instance
const client = new Client({
  intents:
    [GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent]
});

client.once(Events.ClientReady, c => {
  console.log(`Ready! Logged in as ${c.user.tag}`);
});

client.on(Events.MessageCreate, async message => {
  if (message.content.substring(0, 1) === "!") {
    const prompt = message.content.substring(1); //remove the exclamation mark from the message
    const answer = await ask(prompt); //prompt GPT-3
    client.channels.fetch(message.channelId).then(channel => channel.send(answer));
  }
});

// Log in to Discord with your client's token
client.login(token);

Примечание. Возможно, это не оптимальный код, но он работает у меня на сегодняшний день (19.11.2022). Я надеюсь, что это исправит проблемы, с которыми некоторые из вас сталкивались, когда бот не отвечал! Удачного кодирования!