快速开始

启动拉格朗日服务器

Lagrange文档 - 快速部署 & 配置open in new window

Lagrange文档 - 快速部署 & 配置
https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/Config/

请使用 screen, tmux 或者 pm2 工具将拉格朗日挂在后台。

请使用默认配置!目前我们只支持拉格朗日默认的反向ws连接,虽然我知道阁下们肯定懒得折腾另外两种连接方式。

安装与配置本项目

在阁下的项目文件夹中

# npm
npm install lagrange.onebot

# yarn
yarn add lagrange.onebot

修改 tsconfig.json,开启装饰器

{
    "compilerOptions": {
        ...
        "experimentalDecorators": true,
        ...
    }
}

开始阁下的第一个 hello world

我们新建两个文件 main.tsimpl.ts. 也就是本项目 ./test 文件夹下的内容。

下面的代码演示了如何开启服务,并在服务开启和关闭时给某个人发送消息。

// main.ts
import { server } from 'lagrange.onebot';
import './impl';

// server 刚启动的时候要做的事情
server.onMounted(c => {
    // 向 QQ 号为 1193466151 的好友发送文本信息 "成功上线"
    c.sendPrivateMsg(1193466151, '成功上线');
});

// server 即将关闭时要做的事情
server.onUnmounted(c => {
    // 向 QQ 号为 1193466151 的好友发送文本信息 "成功下线"
    c.sendPrivateMsg(1193466151, '成功下线');
})

server.run({
    // 拉格朗日服务器中的配置参数
    host: '127.0.0.1',
    port: 8080,
    path: '/onebot/v11/ws',

    // 阁下启动的机器人的 QQ 号
    qq: 1542544558
});

正常启动的控制台输出如下:

 | INFORMATION     2024-06-01 23:31:25   websocket 服务器创建完成
 | INFORMATION     2024-06-01 23:31:29   完成 websocket 连接,启动参数如下
┌─────────┬──────────────────┐
│ (index) │      Values      │
├─────────┼──────────────────┤
│  host'127.0.0.1'    │
│  port   │       8080       │
│  path   │ '/onebot/v11/ws' │
│   qq    │    1542544558    │
└─────────┴──────────────────┘
 | INFORMATION     2024-06-01 23:31:29   消息处理管线注册完成

如果想要自定义对于某个人或者某个群的回答行为,可以通过 mapper 注解/装饰器 的方式将您写的业务函数装配进事务管线中, lagrange.onebot 会自动去处理这些信息。写法综合了 java 的 springboot 和 go 的 gin ,对于熟悉后端开发的同学而言,应该非常简单。

// impl.ts

import { mapper, LagrangeContext, PrivateMessage } from 'lagrange.onebot';

export class Impl {

    // 将对于用于 1193466151 的应答函数装配进管线中
    @mapper.onPrivateUser(1193466151)
    async handleJinhui(c: LagrangeContext<PrivateMessage>) {
        /**
         * c 是 lagrange.onebot 中最核心的上下文,它包含了所有满足 
         * onebot v11 协议的 API
         * c.message 是当前事务的消息
        */
        const msg = c.message.raw_message;
        const reply = '阁下刚刚的回答是 ' + msg;
        c.sendPrivateMsg(c.message.user_id, reply);
        // 和下面几种写法完全等价
        // c.sendPrivateMsg(1193466151, reply);
        // c.sendMessage(reply);


        // finishSession 会标记当前事务为“已完成”,此时 c.fin 为 true
        // c.fin 为 true 的情况下,所有 onebot v11 API 全部失效
        c.finishSession();
    }
}

效果预览

更多使用方法,请参考:

Last Updated 2024-09-19 04:43:18