Когда бот перезапущен или включен, выполните определенную функцию

#node.js #visual-studio-code #discord.js

#node.js #visual-studio-code #discord.js

Вопрос:

Я пытаюсь сделать так, чтобы при перезапуске моего бота в ready.js файл, который будет искать веб-ссылки, сделанные им во всех гильдиях, в которых состоит бот, затем бот будет использовать этот веб-хук и отправлять сообщения через него. Я не смог никуда добраться, и это в JS.

Я ссылался на документацию для Discord.JS и на самом деле ничего не добились. Я попытался получить идентификатор клиента от webhook.owner и посмотреть, совпадает ли с ним идентификатор бота. Я не уверен, как извлечь идентификатор клиента из webhook.owner

 guild.fetchWebhooks()
    if(webhook.owner == `${bot.user.id}`);
  

(предлагается)

 guild.fetchWebhooks()
    if(webhook.owner == `${bot.user.username}`);
  

(актуально)
Это единственный код, который я смог придумать, при необходимости могу добавить полный файл.

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

В итоге происходит то, что мой бот просто отправляет упоминание о боте.

Ответ №1:

Сделайте что-то вроде этого:

  bot.on('ready', async () => {                          // on ready
    await bot.guilds.forEach(async guild => {           // in all guilds:
        const webhooks = await guild.fetchWebhooks();   // check for Webhooks
        await webhooks.forEach(async webhook => {       // for all found Webhooks:
            if (webhook.owner.id == bot.user.id) {      // check if bot owns them
                webhook.send('test');                   // Do something with the Webhook example
            }
        });
    });
});