Я хотел бы отправить сообщение по определенному каналу, который бот выключает или включает - PullRequest
0 голосов
/ 06 июня 2019

Итак, я новичок в создании ботов, кодировании и прочем, и это может быть новым вопросом, но в любом случае у меня нет хостинг-сервера для моего бота, поэтому я подумал, что, возможно, когда бот выключится, он отправитсообщение в канале Но я понятия не имею, как это сделать или если это возможно.Я смог добиться этого, когда бот включается, но я не знаю, как это происходит, когда бот выключается.

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

bot.on('ready', () =>{
bot.channels.get("488916182406004747").send("The cloud has lifted");

})

1 Ответ

1 голос
/ 06 июня 2019

Команда выключения

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

Пример:

// 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.

...