Я делал бота 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})`
Можно ли адаптировать мой код к любой из этих функций ответа? Клянусь, я пытаюсь это сделать уже месяц. Любой ответ приветствуется!
Вау, спасибо за ответ! Кроме того, эта ветка объясняет, что пока нет способа заставить бота отправлять нормальный ответ ... Так что я могу оставить эту часть в стороне, теперь мне интересно, был ли метод Webhook изначально закодирован создателем бота. с этими веб-перехватчиками, и если это так, я полагаю, что больше ничего не могу сделать, я почти не знаю о кодировании ... Я могу попробовать создать свой собственный метод, но, поскольку я как-то новичок, это будет сложно - на случай есть известный способ с помощью Webhooks, я могу сделать его для своего бота, я постараюсь изучить больше!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В версии 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(() => { });
});
это отвечает на ваш вопрос?