709 字
4 分钟
使用Node.js制作关于Napcat的Minecraft小插件(Websocket篇)

如果忘了HTTP篇的也可以先看一下上一篇文章~ 使用Node.js制作关于Napcat的Minecraft小插件(HTTP篇)

安装依赖喵~#

首先要用 pnpm 安装 WebSocket 库:

Terminal window
pnpm add ws

安装成功的话会显示 + ws@xxx 这样的提示

连接服务器喵~ 🔌#

基础连接设置#

const WebSocket = require('ws');
let ws; // 保存连接用的变量
function connect() {
// 服务器地址和密钥
const serverUrl = 'ws://127.0.1.1:32768';
const token = 'abc12345'; // 这是访问密钥喵
console.log('正在连接服务器...');
// 创建 WebSocket 连接
ws = new WebSocket(`${serverUrl}/?access_token=${token}`);
// 连接成功时的处理
ws.on('open', () => {
console.log('✅ 连接成功,服务器已经准备好接收消息了!');
});
// 连接断开时的处理喵 (´;ω;`)
ws.on('close', () => {
console.log('💔 啊啦~ 连接断开');
console.log('🔄 3秒后重新连接');
setTimeout(connect, 3000); // 3秒后自动重连
});
// 出错时的处理
ws.on('error', (error) => {
console.log('连接出错了:', error.message);
});
}
// 开始连接喵!
connect();

连接参数说明喵~#

密钥是通过 URL 参数传递的喵:

// 像这样把密钥放在链接里
// ws://服务器地址:端口号/?access_token=你的密钥
const ws = new WebSocket('ws://127.0.0.1:32768/?access_token=abc12345');

发送消息喵~ 📤#

基础发送函数#

// 通用的消息发送函数
function sendMessage(messageData) {
if (ws && ws.readyState === WebSocket.OPEN) {
const jsonString = JSON.stringify(messageData);
ws.send(jsonString);
console.log('📤 消息发送成功');
} else {
console.log('连接还没准备好,不能发送消息');
}
}

发送文本消息喵~#

// 发送普通的群聊文字消息
function sendTextToGroup(groupId, text) {
const message = {
"action": "send_group_msg",
"params": {
"group_id": groupId,
"message": [
{
"type": "text",
"data": {
"text": text
}
}
]
}
};
sendMessage(message);
}
// 使用示例喵:
sendTextToGroup(123456, "大家好,我是可爱的猫娘~");

发送 @ 某人的消息喵~#

// 发送 @ 特定用户的消息喵~
function sendAtMessage(groupId, userId, text) {
const message = {
"action": "send_group_msg",
"params": {
"group_id": groupId,
"message": [
{
"type": "at",
"data": {
"qq": userId.toString(), // 要 @ 的用户ID喵
"text": text // 显示的文字喵
}
}
]
}
};
sendMessage(message);
}
// 使用示例喵:
sendAtMessage(123456, 789012, "主人~");

接收消息喵~ 📥#

监听收到的消息#

// 设置消息监听器喵~
ws.on('message', (data) => {
try {
const message = JSON.parse(data);
console.log('📥 收到新消息', message);
// 在这里处理收到的消息喵
// 比如回复、执行命令什么的...
} catch (error) {
console.log('❌ 消息解析失败了...');
}
});

完整示例喵~ 💫#

const WebSocket = require('ws');
let ws;
// 连接服务器
function connect() {
ws = new WebSocket('ws://127.0.0.1:32768/?access_token=abc12345');
ws.on('open', () => {
console.log('🎉 连接成功,可以开始聊天了~');
});
ws.on('close', () => {
console.log('💤 连接断开了,5秒后重连');
setTimeout(connect, 5000);
});
}
// 发送消息的函数
function sendTextToGroup(groupId, text) {
const message = {
"action": "send_group_msg",
"params": {
"group_id": groupId,
"message": [{ "type": "text", "data": { "text": text } }]
}
};
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify(message));
console.log('消息已送出');
}
}
// 开始使用喵!
connect();
// 示例:发送一条测试消息
setTimeout(() => {
sendTextToGroup(123456, "成功上线");
}, 2000);

总之,扩展性还是很强的~只要想做,功能一般都能实现_(:з」∠)_#

使用Node.js制作关于Napcat的Minecraft小插件(Websocket篇)
https://zlawa.zone.id/posts/napcat2/
作者
子澪
发布于
2025-11-01
许可协议
CC BY-NC-SA 4.0