使用 Discord.js,如何在触发 webhook 时触发机器人?

Posted

技术标签:

【中文标题】使用 Discord.js,如何在触发 webhook 时触发机器人?【英文标题】:Using Discord.js, how can I trigger a bot when a webhook is triggered? 【发布时间】:2021-09-01 15:52:27 【问题描述】:

我在服务器中有一个机器人(例如,假设服务器称为“John's Server”),所以在 John's Server 中也有一个 webhook。

我想要做的是,每当在 John 的服务器中发送 webhook 消息时,机器人都会在通道中发送消息。 (例如,假设频道 ID 为 1234567890)

因此,如果 John 的服务器中 ID 为 0000000000 的 webhook 用于发送消息,则机器人会在通道 1234567890 中发送消息。

这怎么可能? (顺便说一下,使用 Discord.js)

【问题讨论】:

【参考方案1】:

为此,您必须监听 message 事件,当它触发时,您将检查 Message#webhookID 属性。如果它具有真值,则消息是从 webhook 发送的,否则它是从用户发送的。 然后你需要做的就是从服务器获取频道并发送消息。

这是一个例子:

client.on("message", (message) => 
  if (!message.webhookID) return; // If the message isn't from a webhook, don't do anything
  const channel = message.guild.channels.fetch("0123456789");
  // Using the fetch method, discord.js will check the cache first, if the channel is there
  // then it will return it, otherwise discord.js will hit the Discord API and get the channel
  
  channel.send(`
A message from $message.author.username ($message.webhookID) has been sent in 
$message.channel.name.
Message: $message.url
  `);
);

【讨论】:

以上是关于使用 Discord.js,如何在触发 webhook 时触发机器人?的主要内容,如果未能解决你的问题,请参考以下文章

使用 2 个 Dynos 在 Heroku 上运行 Discord.js 机器人会触发 2 个事件。每个 websocket 连接 1 个

discord.js guildCreate.js 事件未触发

Discord.JS V13 client.on messagecreate 未触发

如何在 discord.py 中使用高级命令处理

从反应 discord.js 中获取消息 ID

在 discord.js 中的时间限制之前获取收集的消息