当机器人重新启动或打开时,执行特定功能

Posted

技术标签:

【中文标题】当机器人重新启动或打开时,执行特定功能【英文标题】:When bot is restarted or turned on, do a specific function 【发布时间】:2019-08-21 03:50:58 【问题描述】:

我正在尝试这样做,以便当我的机器人重新启动时,它会在 ready.js 文件中搜索它在机器人所在的所有公会中创建的 webhook,然后机器人将使用该 webhook 并通过它发送消息。我无法到达任何地方,这是在 JS 中。

我已经参考了 Discord.JS 的文档,但确实没有得到任何帮助。我尝试从webhook.owner 获取客户端 ID,并查看机器人的 ID 是否与它匹配。我不知道如何从webhook.owner中提取客户端ID

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

(建议)

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

(实际) 这是我能想到的唯一代码,如果需要可以添加完整文件。

我希望机器人在重新启动时 (bot.on) 会搜索它所在的所有公会并找到它拥有的 webhook,并通过它发送消息而不将消息发送到另一个活动的 webhook。

最终发生的事情是我的机器人只是发送了一个关于该机器人的提及。

【问题讨论】:

【参考方案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
            
        );
    );
);

【讨论】:

以上是关于当机器人重新启动或打开时,执行特定功能的主要内容,如果未能解决你的问题,请参考以下文章

从 shell 重新启动 VM(在 vbox 上运行)到特定的(编译的)内核

通过单击应用程序图标(来自后台)打开时反应本机android应用程序重新启动

创建文件观察器,当特定文件被修改时将重新启动 websocket 服务器

c#当屏幕/显示器电源关闭或打开时如何获取事件?

Docker - 如果另一个重新启动,则重新启动特定容器

打破一个while循环并重新启动代码