Гайд Discord | Взаимодействие с API

choco.pay

Участник
Автор темы
30
2
4993-1xkilla-pfpsgg.png

Здравствуйте, читатели этой статьи! Мы рассмотрим простой способ взаимодействия с Discord API без использования сторонних библиотек. Отправим сообщение от имени бота в Discord канал с использованием только модуля https в Node.js.
https://discord.com/developers/docs/topics/gateway
https://discord.com/developers/applications
https://discord.com/api/channels/123456789123456789/messages


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

  1. Первым делом перейдем на https://discord.com/developers/applications. Затем, нажимаем New Application.
    184969-b0967ee9fe89fb5d3354ff6d47d18644.jpg
  2. Вводим название приложения, читая Developer Terms of Service (https://discord.com/developers/docs/policies-and-agreements/developer-terms-of-service) и Developer Policy (https://discord.com/developers/docs/policies-and-agreements/developer-policy) после всего этого нажмите на кнопку Create.
    184970-50cd2180602df711d9f05d42e61feb32.jpg

  3. Нажимаем на пункт слева: "Bot".
    184974-aec1911f4b0c747f78e5875b98f0bdee.jpg
  4. Нажимаете Add Bot и подтверждаете.
    184978-1603385b38175e8f91353321c7f1714c.jpg

Поздравляю, наш бот создан и хранится на https://discord.com/developers/applications. Остается только написать код.
Сама опция для запроса выглядит следующим образом:

Опция для запроса:
// Токен
const https = require("https");
const token =
  "TOKEN_BOT"; // Замените на ваш TOKEN

// Содержимое сообщения для отправки
const messageContent = "Привет, я бот! Это сообщение от меня.";

// Формируем объект данных для сообщения
const postData = JSON.stringify({
  content: messageContent
});

// Опции для запроса
const options = {
  hostname: "discord.com",
  port: 443,
  path: "/api/channels/CHANNEL_ID/messages", // Замените на ваш ID канала
  method: "POST",
  headers: {
    Authorization: `Bot ${token}`,
    "Content-Type": "application/json",
    "Content-Length": Buffer.byteLength(postData)
  }
};
Отправка запроса и его завершение будут выглядеть следующим образом:
Отправка запроса и его завершение:
// Отправка запроса
const req = https.request(options, (res) => {
  console.log(`Status code: ${res.statusCode}`);
  res.on("data", (d) => {
    process.stdout.write(d);
  });
});

req.on("error", (error) => {
  console.error(error);
});

// Запись данных и завершение запроса
req.write(postData);
req.end();

В канале должно появится следующее сообщение:
image7f98ca6346d954c1.png



Код:
Status code: 200
{"id":"ID","type":0,"content":"\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0431\u043e\u0442! \u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043c\u0435\u043d\u044f.","channel_id":"CHANNEL_ID","author":{"id":"BOT_ID","username":"BOT_NAME","avatar":null,"discriminator":"BOT_DISCRIMINATOR","public_flags":0,"premium_type":0,"flags":0,"bot":true,"banner":null,"accent_color":null,"global_name":null,"avatar_decoration_data":null,"banner_color":null},"attachments":[],"embeds":[],"mentions":[],"mention_roles":[],"pinned":false,"mention_everyone":false,"tts":false,"timestamp":"2024-01-30T13:16:40.978000+00:00","edited_timestamp":null,"flags":0,"components":[],"referenced_message":null}

P.S.: Картинки украл у riverya4life
Спасибо за внимание, возможно в будущем ИМЕННО ТЫ станешь успешным разработчиком (нет)
 
Последнее редактирование:
  • Эм
  • Нравится
Реакции: neverlane и Vespan

sizeoftrickster

…And Megadeth For All?
Проверенный
121
438
Добавил бы что-то отличное, от обычной отправки сообщения, например, обработка различных событий