Команда выключения
Как упоминалось в комментариях, вы можете создать простую команду для выключения вашего клиента, которая будет отправлять желаемое сообщение.
Пример:
// Async context required to use keyword 'await'
try {
await message.channel.send('Goodbye'); // Send the message
await message.delete(); // Delete the command message
await client.user.setStatus('invisible'); // Mark the client as offline (instead of waiting)
await client.destroy(); // Remove the client instance
} catch(err) {
console.error(err); // Return any errors from rejected promises
}
Webhook
Если вы хотите, чтобы сообщение отправлялось, когда ваш процесс Node завершается в общем по любой причине (то есть журналы клиентаout, компьютер выключен , CTRL + C и т. д.), вы можете создать Webhook и использовать его в событии beforeExit
процесса.
Чтобы создать веб-крючок, перейдите к параметрам канала, на который вы хотите отправлять сообщения. Перейдите на веб-крючки, нажмите «Создать веб-крючок», настройте параметры, скопируйте URL-адрес веб-крючка и нажмите «Сохранить».В URL-адресе идентификатор является первой группой цифр только после /webhooks/
, а токен следует за следующим /
.
Пример:
const { id, token } = require('./webhook.json'); // json file with Webhook's ID and token
// const Discord = require('discord.js');
// const client = new Discord.Client();
const webhook = new Discord.WebhookClient(id, token);
process.once('beforeExit', () => {
webhook.send(`${client.user} has gone offline.`)
.catch(console.error);
});
Бонус: Вы также можетеиспользуйте Webhook в событии ready, чтобы отправить сообщение «ready».
client.once('ready', () => {
webhook.send(`${client.user} is now online.`)
.catch(console.error);
});
EDIT:
Событие beforeExit
равно не выводится , когда процесс Node.js неожиданно завершается, например, когда вы закрываете окно консоли.Поэтому сценарии only , в которых вы найдете опцию Webhook, полезны, когда ваш клиент падает или вы используете CTRL
/ CMD
+ C
в окне консоли.
Myпредложение будет придерживаться команды выключения.Чтобы ваш бот работал без надлежащего хостинга, вы можете попробовать диспетчер процессов или создать службу Windows.