Как заставить бота DIscord.js отвечать на сообщение?

Я делал бота Discord.js (V12), который поддерживает тип команды «сказать» (обратите внимание, что я новичок в этом), но когда я использую эту команду «сказать» и нажимаю «ответить» в определенном message он просто отправляет сообщение, которое я написал, он вообще не показывает исходное сообщение, на которое я отвечал. Вот что я написал с ботом и вот результат.

Мой код команды «сказать» прост, потому что я не мог найти фактическую функцию ответа, поэтому я не мог ее добавить (мне пришлось удалить контент, чтобы он был более точным).

client.on('message', (message) => {
    if (message.content.startsWith('p:')) {
      //This line reads the content of the message, creates the variable "say" for it.
        var say = message.content;
      //This removes my message, so it can be replaced by bot's one.
        message.delete();
      //This line deletes the prefix from "say" and sends the rest of the message.
        message.channel.send(say.replace('p:', '')
    .catch(() => console.error('Failed to send - Can\'t send empty messages!'));
    }
});

Я обнаружил, что есть еще один способ ответить. Вот два: первый - обычный, а другой - от Tupperhook (Webhook), созданный ботом Tupperbox.

Есть ли способ сделать хотя бы версию ответа веб-перехватчика для бота?

В случае, если метод Webhook может работать, у меня уже есть способ перейти к сообщению (в этом примере исходное сообщение запускает определенную команду - это будет изменено, чтобы перейти к ответному сообщению) внутри вставки, и вот код для этого.

//These should be in the embed command.
//This line recognizes the servers the bot is in.
  var guild = message.guild
//This other line recognizes the channels of the servers.
  var channel = message.channel
//This one sends the word "Message" and includes a link to the message that triggered this command.
  `[Message](https://discordapp.com/channels/${guild.id}/${channel.id}/${message.id})`

Можно ли адаптировать мой код к любой из этих функций ответа? Клянусь, я пытаюсь это сделать уже месяц. Любой ответ приветствуется!

это отвечает на ваш вопрос?

Cursed 30.03.2021 13:44

Вау, спасибо за ответ! Кроме того, эта ветка объясняет, что пока нет способа заставить бота отправлять нормальный ответ ... Так что я могу оставить эту часть в стороне, теперь мне интересно, был ли метод Webhook изначально закодирован создателем бота. с этими веб-перехватчиками, и если это так, я полагаю, что больше ничего не могу сделать, я почти не знаю о кодировании ... Я могу попробовать создать свой собственный метод, но, поскольку я как-то новичок, это будет сложно - на случай есть известный способ с помощью Webhooks, я могу сделать его для своего бота, я постараюсь изучить больше!

Chris no Akumu 30.03.2021 13:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
49
1

Ответы 1

В версии 12 это невозможно сделать, но это возможно с помощью запроса API, в частности Создать сообщение.

И поле, которое позволяет нам ответить на сообщение, - message_reference.

const fetch = require('node-fetch')
client.on("message", (message) => {
  if (message.author.bot) return;
  const url = `https://discord.com/api/v8/channels/${message.channel.id}/messages`;
  var payload = {
    content: "Hello, World!",
    tts: false,
    message_reference: {
      message_id: message.id
    }
  };
   fetch(url, {
    method: "POST",
    body: JSON.stringify(payload),
    headers: {
      Authorization: `${client.user?.bot ? "Bot " : ""}${client.token}`,
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
  }).catch(() => { });
});

Другие вопросы по теме