温馨提示:本篇文章更偏向小白,是我个人的探索经历,不喜勿喷~
简介:LeviLamina为轻量级、多语言支持的基岩版BDS插件加载器,提供全面API和事件系统
一.起因
NapCat 是一个专门用来快速搭建网络通信服务的“工具箱”
在我刚刚接触到Napcat的时候就被它的优点吸引,它有以下几个优点
- 高性能–不依赖框架加载,不依赖 Electron,内存占用低至 50~100 MB
- 多平台–得益于优秀的适配,可以快捷部署于 Windows/Linux/MacOS 等主流 x64 架构平台(甚至是手机Android也可以!)
- 不易坏–虽然之前也有很多机器人框架,但在官方的封杀下也变得越来越少,且机器人更容易被封。
用Napcat,开发者不用从零造轮子,直接用它就能快速做出稳定的聊天软件、游戏联机服务等需要实时通信的应用,更方便
综上所述~我决定用Node.js写一个小插件,装载在我的Minecraft服务器上
二.设想
那么,这个小插件应该具有什么样的功能呢?
首先,如果不考虑与群友们交互,那不就是进/退服通知,以及服务器内消息转发莫?(绝对不是因为我不会写_(•̀ω•́ 」∠)_)
其次,考虑交互,那可以让QQ群与服务器内的经济系统实现联动,完全有助于提高群友们的活跃度以及新鲜感嘛~(虽然本篇不写交互,交互应该在下篇?)
所以我决定先写进/退服通知
三.开始
先简单创建一个Node.js项目,具体教程可以看一下上一篇文章噢!
什么?你还不会使用Node.js创建项目!(以ubuntu的安装使用为例)
到这里我们就要做选择了–是用http的请求方式,还是直接用websocket连接呢?
我选择http,因为进/退服通知不直接不涉及交互,这里使用引入axios库方便使用。
安装axios
npm install axios
经过简单的试验,我们能知道请求到接口的URL分为以下几部分
- 1.基础URL部分(比如http://example:12345)
- 2.接口路径部分(比如/send_private_msg)
- 3.认证参数部分(access_token=你的http请求token)
融合一下就是http://example:12345/send_private_msg?access_token=你的http请求token
另外查看官方提供的示例可以知道一个接口请求时都要带什么参数

然后把user_id和消息内容用axios的方法请求,就有了一个简单的示例
const axios = require('axios');
const msg = {
type: "text",
data: {
text: "你好"
}
};
axios.post('http://example:12345/send_private_msg?access_token=你的http请求token', {
user_id: 发送对象的qq号,
message: msg
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('请求失败:', error.response ? error.response.data : error.message);
});
运行这个文件试一下,如果配置正确就能在QQ里面看到消息了awa
接着查看我所用的服务端模组加载器LeviLamina的文档

结合以上监听事件,咱们直接看写完的示例
const axios = require('axios');
function sendNotification(pl, hint) {
const msg = {
type: "text",
data: {
text: `${pl.name} ${hint}`
}
};
axios.post('http://example:12345/send_private_msg?access_token=你的http请求token', {
user_id: 发送对象的qq号,
message: msg
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('请求失败:', error.response ? error.response.data : error.message);
});
}
mc.listen("onJoin", (pl) => {
const hint = "进入了服务器!";
sendNotification(pl, hint);
});
mc.listen("onLeft", (pl) => {
const hint = "离开了服务器!";
sendNotification(pl, hint);
});
四.注意
1.如果机器人的请求接口的端口默认是80,在URL中可以不加端口
2.如果没有设置token可以直接用http://example:12345/send_private_msg,不需要认证参数(虽然我还是比较推荐设置token的)
3.并不是一定要用LeviLamina,你可以在其它支持用Node.js写插件的minecraft服务端按照文档也可以写
4.你也可以按照Napcat的官方文档更改接口路径部分和请求参数,视情况和需求而定













- 最新
- 最热
只看作者