您可以使用 webhook 来执行您描述的操作。如果您已经有一个 webhook 链接,请参阅 here 了解如何使用它。这也适用于外部程序。
如果您不这样做,您可以使用您的机器人创建一个 webhook,然后向它发送消息。在本例中,我们将创建一个简单的 webhook 并向其发送消息。
首先我们应该检查通道是否已经有一个 webhook。这样您就不会在每次使用该命令时都创建一个新的。您可以使用 fetchWebhooks() 函数来执行此操作,如果存在 webhook,该函数将返回一个集合。如果是这种情况,我们将获得集合中的第一个 webhook 并使用它。 注意:如果您有多个 webhook,您当然可以在第一个 webhook 之后添加额外的检查。
如果不存在 webhook,我们使用createWebhook() 创建一个新的。你可以在名字后面加上additional options。
let webhook;
let webhookCollection = await message.channel.fetchWebhooks();
if (webhookCollection.first()) {
webhook = webhookCollection.first();
} else {
webhook = await message.channel.createWebhook("new webhook", {
avatar: "https://i.imgur.com/tX5nlQ3.jpeg"
});
}
注意:在此示例中,我们使用消息来自的频道,但您可以使用任何您想要的频道
从技术上讲,我们现在已经可以发送消息了。
webhook.send("this is a test");
您还可以创建一个webhookClient。这有点像您在启动机器人时创建的不和谐客户端。它需要 webhook ID 和令牌以及您可以为客户端设置的 additional options。
const hookclient = new Discord.WebhookClient(webhook.id, webhook.token);
这让您可以使用一些额外的方法,例如setInterval。
hookclient.setInterval(() => {
hookclient.send("This is a timer test");
}, 1000)
这让您可以使用 webhook,而无需先创建或获取一个。