You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Discord.js v12机器人在Axiore Community的Webhook发送随机消息时自动回复?

Discord.js v12 机器人自动回复Axiore Community消息方案

我来帮你搞定这两个机器人开发问题,下面是具体的实现步骤和代码:

问题1:让机器人在Axiore Community发送随机消息时自动回复

要实现这个功能,核心是检测目标服务器的消息,然后触发回复。首先你得先获取Axiore Community服务器的ID(打开Discord开发者模式,右键服务器就能复制ID),然后在message事件里做判断:

// 先准备一些随机回复内容,你可以自己修改
const randomReplies = [
  "收到这条消息啦!",
  "哈哈,又刷到新消息咯~",
  "已自动回复:这条消息我接住啦!"
];

client.on("message", message => {
  // 跳过机器人自己的消息,防止无限循环回复
  if (message.author.bot) return;
  
  // 替换成你拿到的Axiore Community服务器ID
  const targetServerId = "你的服务器ID";
  // 判断消息是否来自目标服务器
  if (message.guild?.id === targetServerId) {
    // 随机选一个回复发送
    const pickReply = randomReplies[Math.floor(Math.random() * randomReplies.length)];
    message.channel.send(pickReply);
  }
});

关键点说明:

  • 必须跳过机器人消息:不然机器人回复自己的消息会陷入循环
  • 一定要指定目标服务器:避免机器人在其他服务器也乱回复
  • 权限要到位:确保机器人在目标服务器有查看频道和发送消息的权限

问题2:针对Axiore Community的Webhook消息自动回复

你的现有代码已经有基础框架了,只需要在message事件里新增Webhook消息的检测逻辑就行。Discord.js v12里,Webhook发送的消息会带有webhookID属性,普通消息这个属性是null,我们可以利用这一点来判断:

修改后的完整代码如下:

const Discord = require('discord.js');
const client = new Discord.Client();
const express = require("express");
const app = express()
app.get("/", (req, res) => {
  res.send("hello world!")
})
app.listen(3000, () => {
  console.log("Protect is already!")
})
client.on('ready', () => {
  console.log("is time to ping fruit stock!")
});

// 自定义Webhook消息的回复内容,可选随机或固定
const webhookReplies = [
  "Webhook消息已收到!自动回复~",
  "哟,Axiore的Webhook又发消息啦!",
  "收到来自Axiore Community的Webhook通知!"
];

client.on("message", message => {
  // 保留你原来的"Current stock"逻辑
  if (message.content === `Current stock`) {
    message.channel.send("**New current stock!**")
  }

  // 新增Webhook消息检测逻辑
  // 1. 跳过机器人消息(保险起见)
  if (message.author.bot) return;
  // 2. 确认消息来自目标服务器
  const targetServerId = "你的Axiore Community服务器ID";
  if (!message.guild || message.guild.id !== targetServerId) return;
  // 3. 判断是否是Webhook发送的消息
  if (message.webhookID) {
    // 随机选一个回复发送,要是想固定回复直接改成固定字符串就行
    const pickReply = webhookReplies[Math.floor(Math.random() * webhookReplies.length)];
    message.channel.send(pickReply);
  }
})
client.login(process.env.token)

关键点说明:

  • message.webhookID:这是判断Webhook消息的核心标识,只要存在这个值就说明是Webhook发送的
  • 保留了你原来的业务逻辑:不会影响你之前写的"Current stock"回复功能
  • 同样要确保机器人在Webhook发送消息的频道有发送消息的权限

额外提醒

Discord.js v12已经停止官方维护了,如果后续有升级需求,建议考虑迁移到v14或更高版本,不过如果必须用v12,上面的代码完全可以正常运行。

内容的提问来源于stack exchange,提问作者Gia Huy Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 17:27:37