709 字
4 分钟
使用Node.js制作关于Napcat的Minecraft小插件(Websocket篇)
如果忘了HTTP篇的也可以先看一下上一篇文章~ 使用Node.js制作关于Napcat的Minecraft小插件(HTTP篇)
安装依赖喵~
首先要用 pnpm 安装 WebSocket 库:
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/