如何让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
相关产品推荐
相关产品推荐

