# 星云语言 **Repository Path**: cjxpj/nebula ## Basic Information - **Project Name**: 星云语言 - **Description**: 果汁负责运行,跨平台兼容性良好,nebula语言拥有全新的语法,中文开发。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://cjxpj.cn - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 1 - **Created**: 2024-07-05 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Nebula 语言使用指南 ✨ ## 🌟 介绍 > 这是一个用于运行 Nebula 语言的平台 > 拥有良好的语法功能 > 帮助你更快更便捷开发网站等服务 ### 使用说明 📝 ``` 启动后会生成NebulaData文件夹 请仔细阅读README.md文档进行使用 启动成功后就能访问127.0.0.1:8080进行查看 如果找不到md查看器,可以把md放进public访问进行查看。 ``` ## 📱 手机目录 Documents/NebulaData ## 🔤 词库相关 ### wn词库 📑 ```

{{.标题}}

{{.副标题}}

``` ### n词库 📚 默认Main触发词 ``` 头部执行 赋予值:内容 Main 触发执行:%赋予值% ``` ## 📂 初始文件 ### 程序内置文档位置 📄 NebulaData/README.md ### 默认启动 🌐 **127.0.0.1:8080** ### 程序系统重要文件 ⚙️ #### 随着系统跟随启动的配置 NebulaData/private/system/config.n #### 路由词库 🗺️ NebulaData/private/system/router.n ## 👥 开发讨论 QQ群:927467925 ## 🔗 代码仓库 ### Github ``` https://github.com/cjxpj/nebula ``` 下载 ### Gitee ``` https://gitee.com/cjxpj/nebula ``` 下载 ## 🚀 Nebula 核心特性 > 基于Golang语言开发 > 专注WEB站点开发 > 快速成型项目 ### 认识文件分类 🗂️ | 名称 | 目录 | | ---- | ---- | | 储存目录 | database | | 资源目录 | private | | 词库目录 | public | ``` 储存目录用于读写,资源目录用于存放重要资源跟词库,词库目录用于被访问执行公开的数据。 ``` ## 📦 数据结构相关 ### JSON框 📦 ``` JSON>赋予值={} a=b a->a=b [] 0=a 1=b 帮助你更方便的多行文本 ``` 文本>赋予值=\n 内 容 <文本 ``` ``` 文本>\n 内 容 <文本 ``` ### 函数框 🔧 > 函数框可以帮助你在运行词库时候动态执行词库 > 可以减少词库回调需求 > 触发可以留空 > 触发留空后就会直接运行 > 函数框也支持获取参数跟括号 ``` 函数>赋予值=触发 a <函数 $%赋予值% 触发$ ``` ``` 函数>赋予值 a <函数 $%赋予值%$ ``` #### 调用示例 📞 ``` 函数>赋予值 $延迟 [1000*5]$ $打印 结束$ <函数 $打印 开始$ #:$%赋予值%$ ``` ### 循环框 🔄 更方便的循环 可以使用>终止 也能修改当前循环次数**i:1** ``` 循环>i=9 %i% <循环 ``` 留空死循环 ``` 循环>i %i% <循环 ``` 可以用在循环框中退出循环 ``` 循环>i=5 %i% 如果:%i%>2 结束 >终止 <循环 ``` 循环中支持 ``` >跳过 >终止循环 >终止 ``` ### 遍历框 🔍 遍历JSON无法修改当前循环次数 但是可以使用>终止 ``` 遍历>i,ii=["a","b"] %i%=%ii% <遍历 ``` 遍历中支持 ``` >跳过 >终止遍历 >终止 ``` ### 整合包 📦 这个相当于面对象功能,后续打算支持New到局部变量中。 ``` 整合包=>我的包 [函数]设置变量 .* $%自己 变量 %参数1%$ [函数]读取变量 $%自己 变量$ <=整合包 Main // 执行整合包函数 $.我的包 设置变量 成功$ $.我的包 读取变量$ // 整合包中获取变量 $%我的包 变量$ ``` ## 📝 编译与加密 ### 编译框 🔨 n文件可以用于词行换行 ``` Main ``` 或者 ``` Main #{ a b c }# ``` ### 加密词库 🔒 返回true/false ``` $加密词库 private/dic.n$ ``` 生成出来的词库会在当前程序的encode文件夹中 ## 🔠 字符串操作 ### 大小写字母 🔡 ``` $大写字母 a$ $小写字母 A$ ``` ### 字符拼接 🔗 ``` $字符拼接 & ["url=","msg="]$ ``` ### 替换 🔄 | 需求 | 内容 | 替换| 成为 | 次数 | | ---- | ---- | ---- | ---- | ---- | | 替换 | 11234 | 1 | 2 | 1 | 返回21234 次数留空为替换全部 ``` $替换 替换内容 需要替换 替换后 [次数]$ ``` #### 正则替换 🧩 ``` $正则替换 文本 正则 替换后 [次数]$ $正则替换 A1A123A \d+ %a%$ ``` ### 截取 🔪 ``` $截取 abcd 1 2$ ``` ### 取中间 🎯 ``` $取中间 abcd a c$ ``` ### 字符定位 🔍 > 没有找到会返回-1 ``` $查找字 内容 查找内容$ ``` ### 字符切片 🍕 ``` // 返回[]json $字符切片 内容$ ``` ### 去除多余符号 ✂️ ``` $去除左右 文本 符号$ $去除左 文本 符号$ $去除右 文本 符号$ ``` ## 📂 文件操作 ### 读取数据 📖 用于读取文件全部文本 ``` $读文件 database/a.txt 默认值$ ``` 读是在一个文件储存多个数据的方法 只会写入到database文件夹下 ``` $读 路径 键 默认值$ ``` 可以获取json列表 ``` $读 文件路径$ ``` // 文件不存在返回默认值 ``` $读文件.随机一行 [路径] [默认值]$ ``` ``` $读文件.行数 [路径] [默认值]$ ``` ``` $读文件行 [路径] [行数] [行数往下数量] [默认值]$ ``` ### 写入数据 ✍️ 用于完全写入文本数据 ``` $写文件 database/a.txt 数据$ ``` 写是在一个文件储存多个数据的方法 只会写入到database文件夹下 ``` $写 路径 键 数据$ ``` ### 文件大小 📏 ``` $文件大小 database/file.txt$ ``` ### 文件夹大小 📁 ``` $文件夹大小 database$ ``` ### 下载文件 📥 ``` // 单线程 $下载文件 [url] [文件路径]$ // 多线程切片下载 $下载文件 [url] [文件路径] [线程|4~8] [下载进度打印终端|false]$ ``` ### 删除文件 🗑️ | 需求 | 目录 | | ---- | ---- | | 删除文件 | database | ``` $删除文件 database/a.txt$ ``` ### 删除文件夹 🗑️📁 ``` $删除文件夹 database/缓存$ ``` ### 存在文件判断 🔍📄 ``` $存在文件 database/a.txt$ ``` 返回true或者false ### 存在文件夹判断 🔍📁 ``` $存在文件夹 database$ ``` 返回true或者false ### 存在文件或文件夹判断 🔍📄📁 ``` $存在文件或文件夹 database$ ``` ### 文件列表 📋 文件夹留空为站点目录 ``` $文件列表 database$ $文件夹列表 database$ $文件跟文件夹列表 database$ ``` 示例 ``` $文件夹列表$ ``` 返回 ``` ["database","private","public"] ``` ### 重命名移动 🔄 返回true/false 成功返回true ``` $重命名 database database2$ ``` ### 复制粘贴 📋 返回true/false 成功返回true ``` $复制粘贴 database database2$ ``` ### ZIP操作 🗜️ ``` $ZIP压缩 database/文件夹 database/a.zip$ $ZIP解压 database/a.zip database/文件夹$ ``` ## 🔐 加密与编码 ### AES 🔒 key范围 16/24/32 ``` $AES加密 CBC/CFB key 内容$ $AES解密 CBC/CFB key 内容$ ``` ### MD5编码 🔏 ``` $MD5编码 内容$ ``` ### Base64 🔑 ``` $B64编码 内容$ $B64解码 内容$ ``` ### URL编码/解码 🌐 > URL链接编码就是自动识别get参数自动编码 > 不会影响到链接 > URL编码是完全编码 ``` $URL编码 内容$ $URL解码 内容$ $URL链接编码 url$ $URL链接解码 url$ ``` ### 编码解码 🔄 | 支持编码 | | :--: | | GBK | | 二进制 | | 十六进制 | | HZGB2312 | | GB18030 | | ASCII | | ISO-8859-1 | ``` $编码 二进制 你好$ $解码 二进制 111001001011110110100000111001011010010110111101$ ``` ### HTML编码/解码 🌐 ``` $HTML编码 内容$ $HTML解码 内容$ ``` ### 📌 Ed25519 密钥与签名函数文档 #### **✅ 获取 Ed25519 的种子长度** ``` $Ed25519种子大小$ ``` #### **✅ 生成一对 Ed25519 公钥与私钥** ``` // 返回 map[私钥/公钥] 数据 $Ed25519生成密钥$ k:@$Ed25519生成密钥$->公钥 ``` #### **✅ 从指定种子生成一对 Ed25519 密钥** ``` // 返回 map[私钥/公钥] 数据 $Ed25519从种子生成密钥 [密钥]$ k:@$Ed25519从种子生成密钥 %密钥%$->私钥 ``` #### **✅ 使用私钥对消息进行签名** ``` // 返回签名结果 $Ed25519签名 [私钥] [消息]$ ``` #### **✅ 验证签名是否合法** ``` // 返回 true 或 false $Ed25519验证签名 [公钥] [消息] [签名]$ ``` #### **✅ 公钥转换** ``` // 返回 Curve25519 公钥 $Ed25519公钥转换为Curve25519 [公钥]$ ``` #### **✅ 私钥转换** ``` // 返回 Curve25519 私钥 $Ed25519私钥转换为Curve25519 [私钥]$ ``` #### **✅ 从 Curve25519 私钥生成 Ed25519 密钥** ``` // 返回 map[私钥/公钥] 数据 $Ed25519从Curve25519生成密钥 [Curve私钥]$ ``` ## 🧮 计算与逻辑 ### 计算 ➕➖✖️➗ > 谁天生是数学天才? > 支持运算符号 ``` 加 + 减 - 乘 * 除 / ``` ``` [2*(1+1)] ``` ``` $计算 1 加 1$ $计算 1 + 1$ $计算 1 减 1$ $计算 1 - 1$ $计算 1 乘 1$ $计算 1 * 1$ $计算 1 除 1$ $计算 1 / 1$ $计算 1 除余 1$ $计算 1 % 1$ $计算 1 按位或 1$ $计算 1 | 1$ $计算 1 << 1$ $计算 1 左移 1$ $计算 1 >> 1$ $计算 1 右移 1$ $计算 1 根号 1$// 平方根 $计算 1 sqrt 1$ $计算 1 四舍五入 1$ ``` ### 判断 🔍 可以用英语缩写 如果尾是不会终止往下执行的 | 中文 | 英文 | | ---- | ---- | | 如果 | if | | 如果尾 | end | | 返回如果尾 | else | #### 返回如果 支持两个方法 ``` a:2 如果:a==0 yes 否则如果:a==1 no elif:a==2 Good 否则 error ``` #### 支持逻辑 ``` 和 & 或 | ``` #### 支持判断 ``` 大于等于 >= 大于 > 小于等于 <= 小于 < 等于 == 不等于 != 混合判断 () 长度判断 ! 数组是否存在字符 in 不等于正则 ~ 正则 ~= ``` ``` 如果:\d+~=123 成功 否则 失败 ``` **返回:成功** ### 判断框 📦 ``` 如果>a==a ok >否则 no <如果 ``` **支持套娃判断** ``` 如果>a==b ok >否则如果:a==a 如果>a==a ok >否则 no <如果 <如果 ``` 支持两种判断内方法 ``` >跳过 >终止 ``` ### 判断值和空值 ❓ | 判断 | | ---- | | null | | nil | | {} | | [] | | false | | 空 | | NaN | | undefined | | 留空 | 判断到空返回true ``` // 返回bool类型数据 $判断空值 null$ ``` 没判断到空返回true ``` $判断值 null$ ``` ## 🌐 网络操作 #### 终止服务器 🛑 // 直接终止服务器,不会关闭主程序,可以做一些应急措施后查看程序日志 ``` $终止服务器$ ``` #### 启动后数据 📊 ``` $全局变量 访问数据$ ``` GET返回示例 ```json { "路径":"/api.n", "来源":"GET", "请求头":{"Accept-Encoding":["gzip"],"User-Agent":["Nebula-Client/1.0"]}, "IP":"127.0.0.1", "Host":"127.0.0.1:8080" } ``` 获取GET参数 ``` $G key 默认值$ ``` POST返回示例 ```json { "路径":"/api.n", "来源":"POST", "请求头":{"Accept-Encoding":["gzip"],"User-Agent":["Nebula-Client/1.0"]}, "IP":"127.0.0.1", "Host":"127.0.0.1:8080" } ``` #### 输出类型 📤 在启动服务器后被访问的词库提供输出类型的方法 ``` $全局变量 输出类型 text$ ``` #### 输出头部 📋 设置后会在输出时候进行 ``` $全局变量 输出头部 {"Location":"https://cjxpj.com"}$ $设置头部 beer good$ ``` #### COOKIE 🍪 设置后会在输出时候进行 《**禁用JS**》默认false,禁用后无法让JavaScript读取,仅限在域名访问中传输。 《**存活**》默认0,秒为单位。 ``` a:""" [ { "命名": "id", "数据": "123456", "路径": "/", "禁止JS": false, "存活": 3600, } ] """ $全局变量 COOKIE %a%$ ``` **目录结构** 服务器WS词库 > private/websocket/server.n 客户端WS词库-支持自义定 > private/websocket/app.n ### WS 🔗 WS连接配合异步使用 ``` // 词库路径留空默认 private/websocket/app.n ws连接数据:$WS连接 [URL] [词库路径]$ // 放在线程变量中储存 $线程变量 WS %ws连接数据%$ ``` 回复WS消息可用 ``` $WS断开连接$ ``` ``` $WS发送 [WS数据] 文本$ $WS断开 [WS数据]$ ``` 类型变量 ``` 文本消息 二进制消息 未知消息 ``` ### 访问 🌐 header可以留空 ``` $访问 url header$ $访问POST url data header$ ``` ### 高度自义定访问 📡 先记录后操作 ``` a:$访问.新建 url$ // 秒为单位,0为不限制 $访问.设置超时 1$ $访问.切换GET %a%$ $访问.切换POST %a%$ $访问.POST %a% data$ $访问.POST文件 %a% form name data$ $访问.POST文件 %a% name data$ $访问.设置头部 json/string$ // 默认启用,禁用可以拦截头部的Location跳转 $访问.启用跳转 %a%$ $访问.禁用跳转 %a%$ // 设置好后调用这个进行访问,数据请用获取内容函数取出,此函数不会返回数据 $访问.发送 %a%$ // 这是获取全部信息,包括准备发送的数据都在内,会屏蔽内容。 $访问.全部内容 %a%$ // 这是只获取结果,就跟直接获取访问一样。 $访问.内容 %a%$ ``` 上传文件 form是表单name文件名字data是数据 ``` $访问.POST文件 %a% form name data$ ``` 直接填名字默认表单跟文件都为同一个名字 ``` $访问.POST文件 %a% name data$ ``` ## 🕒 时间操作 ### 时间变量 ⏰ ``` %时间戳% %毫秒时间戳% %纳秒时间戳% %时间yyyy% ``` ### 时间戳格式化时间 📅 ``` $时间戳格式化时间 %时间戳% s秒$ ``` ### 延迟 ⏳ > 毫秒单位 ``` // 一秒延迟示例 $延迟 [1000*1]$ ``` ## 🎨 绘图与图片处理 ### 绘图 🎨 字体在内部文件夹的字体文件夹内 一个绘图函数中仅支持一个创建 | 需求 | 参数 | 所需 | | ---- | ---- | ---- | | 创建 | 1/2 | img:Base64\|x/y | | 二维码 | 1 | string | | 颜色 | 3/4 | R/G/B/A | | 画字 | 1/3 | string/x/y | | 字体 | 1 | file | | 大小 | 1 | string:int | | 伽马值 | 1 | string:int | | 模糊 | 1 | string:int | | 锐化 | 1 | string:int | | 对比度 | 1 | string:int | | 亮度 | 1 | string:int | | 饱和度 | 1 | string:int | | 画圆 | 2 | x/y | | 画方 | 4 | x始/y始/x终/y终 | | 画线 | 4 | x始/y始/x终/y终 | | 画虚线 | 6 | x始/y始/x终/y终/l长/s间隔 | | 贴图 | 3/5/6 | img:Base64/x/y/w宽/h高/0.1~1透明度 | | 插图 | 1/2 | times/img:Base64 | | 输出 | 1 | gif/png/jpg/jpeg/信息 | | 重构需求 | 参数 | 所需 | | ---- | ---- | ---- | | 圆形 | 0/1 | size | | 圆角矩形 | 2/4 | x/y/dx/dy | | 旋转 | 0/1 | rotate0~360 | #### 示例仅供参考 ```json $全局变量 输出类型 image/png$ 文本>画= [ { "需求": "颜色", "参数": ["255","255","255","255"] }, { "需求": "创建", "参数": ["380","520"] }, { "需求": "颜色", "参数": ["0","0","0","255"] }, { "需求": "大小", "参数": ["25"] }, { "需求": "画字", "参数": ["酒乐文游","135","80"] }, { "需求": "颜色", "参数": ["255","0","0","128"] }, { "需求": "画方", "参数": ["200","200","250","250"] }, { "需求": "输出", "参数": ["png"] } ] <文本 $绘图 %画%$ ``` ### GIF拆帧 🎞️ ``` a:$读文件 database/test.gif$ $GIF拆帧 %a%$ ``` 数据Base64编码了 ```json [ "xxx", "xxx" ] ``` ### 画布 🎨 创建画布需要赋予值 ``` $画布.创建 [高] [宽]$ $画布.创建 [高] [宽] [#十六进制|颜色地址]$ $画布.创建 [URL] [高] [宽]$ $画布.创建 [文件路径] [高] [宽]$ $画布.创建 [图片字符串数据] [高] [宽]$ ``` 绘制 ``` $绘制.图片 [画布] [图片] [高] [宽] [旋转] [x] [y] [透明度] [半径]$ $绘制.方形描边 [画布] [X] [Y] [宽] [高] [圆润] [颜色]$ $绘制.方形 [画布] [X] [Y] [宽] [高] [圆润] [颜色]$ $绘制.椭圆描边 [画布] [X1] [Y1] [X2] [Y2]$ $绘制.椭圆 [画布] [X1] [Y1] [X2] [Y2]$ $绘制.圆形描边 [画布] [X] [Y] [半径] [起始] [结束] [颜色]$ $绘制.圆形 [画布] [X] [Y] [半径] [起始] [结束] [颜色]$ $绘制.多边形 [画布] [X1],[Y1] [X2],[Y2] [X3],[Y3]...$ $绘制.多边形描边 [画布] [X1],[Y1] [X2],[Y2]...$ $绘制.随机线条 [画布] [数量]$ $绘制.随机点 [画布] [数量]$ $绘制.波浪 [画布] [X1] [Y1] [X2] [Y2] [波浪高度] [波长] [步长]$ // 打码像素块通过画笔大小调整,用法跟方形一样,可以先用方形定位后在用马赛克 $绘制.马赛克 [画布] [X1] [Y1] [X2] [Y2]$ $绘制.圆弧 [画布] [X] [Y] [半径] [起始] [结束] [颜色]$ $绘制.线 [画布] [X1] [Y1] [X2] [Y2] [颜色]$ $绘制.喷漆 [画布] [X1] [Y1] [X2] [Y2] [半径] [密度1~100] [颜色]$ $绘制.文本 [画布] [X1] [Y1] [文本] [旋转|0.0] [颜色] [描边颜色] [描边宽度]$ ``` 画笔 ``` // 只读取[私有]目录下,字体文件夹中字体文件 $画笔.字体 [画布] [文件路径|font.ttf]$ $画笔.大小 [画布] [大小]$ $画笔.设置颜色 %a% [随机|#十六进制|颜色地址|R G B A]$ // 需要赋予值获取颜色数据 颜色:$画笔.获取颜色 %a% [#十六进制|R G B A]$ ``` 画布重构,会绘制画布整体构造 ``` // 会旋转整个画布,背景会通过画笔颜色绘制 $画布.旋转 [画布] [旋转]$ // 剪切画布,会绘制画布整体构造,边缘会根据画笔颜色绘制 $画布.圆形 [画布] [半径]$ // 给整个画布打码 $画布.马赛克 [画布] [半径]$ ``` ### 图片相似度 🔍🖼️ ``` 图1:$读文件 database/1.png$ 图2:$读文件 database/2.png$ $图片相似度 %图1% %图2%$ ``` ## 📊 数据处理 ### JSON 操作 📦 ``` $JSON解析 [json] [键]$ // 存可以改成存字只存文本数据 // 可以直接通过多层键设置值 $JSON存 [json] [键]... [值]$ // $JSON存 {} a b 内容$ 返回 {"a"{"b":"内容"}} $JSON存字 [json] [键]... [值]$ // 这是给元素追加用的 $JSON追加 [json] [值]$ $JSON追加字 [json] [值]$ $JSON存在 [json] [键]$ $JSON删 [json] [键]$ ``` #### 有数据数据函数 | 需求 | 返回 | | ---- | ---- | | 解析 | string | | 判断 | true/false | | 长度 | int | | 取出 | json/[]json/string | ``` // 快捷解析支持->批量解析 $JSON解析 [json] 键->键$ $JSON判断 [json]$ $JSON长度 [json]$ ``` #### JSON美化 💄 1代表缩进空格数量,默认就是1可以留空。 ``` $JSON美化 [json] [缩进空格数量]?$ ``` #### JSON赋予值 🔧 ``` a:123 a:{ "a":"a", "b": "%a", "c": "s%a" } ``` ``` a:123 a:[ "a", "%a", "s%a" ] ``` ### 范围 🔢 生成范围内元素 ``` $范围 5 10$ ``` 返回结果 ``` [5,6,7,8,9,10] ``` ### 排序 🔄 true/false代表正反排序 ``` $排序 键 数据 true/false$ ``` 使用示例 ``` z:[ {"data":"100","key":"啤酒"}, {"data":"500","key":"兄弟"}, {"data":"500","key":"兄弟"}, {"data":"50","key":"你好香"} ] $排序 data %z% true$ ``` ### 分割 🔪 ``` $分割 , a,b,c$ ``` 分割范围 ``` $分割 , a,b,c 2$ ``` 分割匹配返回true/false ``` $分割 , a,b,c b$ ``` ## 🔄 流程控制 ### 回调 🔄 内部可以放在触发下 支持缩写[L] ``` $回调 试试$ [内部]试试 成功 ``` ### 终止程序 🛑 **结束程序并且把准备输出内容打印到日志** ``` $STOP$ ``` ### 重启程序 🔄 ``` $重启$ ``` ### 终止 🔚 > 这里只会输出一个a ``` a >终止 a ``` ### 跳行 ⏭️ 是在词条局部内跳行 支持读取变量 ``` >跳行+1 ``` ``` >跳行-1 ``` ## 🧩 其他功能 ### 变量 🔤 读取变量 ``` a:你好 %a% ``` 取反变量 ``` a:false %!a% ``` 快捷获取URL编码数据 ``` a:文本 %URL@a% ``` 快捷B64编码 ``` a:文本 %B64@a% ``` 快捷获取类型 ``` a:文本 %TYPE@a% ``` ### 变量控制 🎛️ 全局变量就是在回调时候还在的变量 不是全局的在执行完毕后就没了 ``` $线程变量 键 值$ $全局变量 键 值$ // 会同时读取全局变量同时读取局部变量 $变量 键 值$ $存在变量 键 值$ ``` 这个返回a因为键被锁了 ``` 键:a $锁变量 键$ 键:b %键% ``` ### 注释 💬 ``` // 注释 /* 多行注释 */ ``` 注释执行他跟**赋予值**一样 但是他不会产生任何数据 ``` #:执行 ``` ### 主机信息 💻 Android无法使用,需要另外方法获取。 ``` $主机 CPU$ $主机 CPU信息$ $主机 内存$ $主机 磁盘$ $主机 网络$ ``` ### 数字格式化 🔢 默认f可填**b/e/E/f/g/G** ``` $数字格式化 1.1201 2 f$ ``` ### 赋予值 🔧 都支持多字符赋予值文本 ``` :$: 执行函数 : 支持多字符,特殊功能 +: 拼接跟加值 -: 减少数值 :: 绝对文本 :%: 只读取变量 ``` #### 特殊功能 ##### 快捷解析示例 ``` a:@{"a":"b"}->a %a% ``` ##### 反取示例 ``` a:false?:错误 %a% ``` ``` a:@{"a":"null"}->a?:没有数据 %a% ``` ### 框选词库换行的 📦 ``` ``` ### 函数 🔧 支持缩写[F] ``` a:b $ok$ $z%b%$ // 只有这个可以运行 $z%a%$ [函数]ok b // 可以指定读取变量 [函数]z%a% %参数0% ``` 变量传出写法 ``` Main $测试 ->成功$ %a% %b% %c% $%动态函数%$ [F]测试 ->(.*)->a,b,c,动态函数 a:1 b:2 c:3 函数>动态函数 4 <函数 %括号1% ! ``` #### 魔术变量 🧙 传入后传出 ``` Main 控制数组:{} _继承_:控制数组 $测试$ %控制数组% [F]测试->控制数组 JSON>控制数组=%控制数组% 键=值 标题

文本

文本2

""" $HTML解析 %a% html head title$ ``` ### MD转HTML 📝➡️🌐 > 把MD文本转为HTML显示 ``` $MD转HTML 内容$ ``` ### 引入 🔗 #### private/dic/a.n ``` [函数]a 成功 ``` #### 运行的词库 ``` #引入=dic/a.n $a$ ``` 引入文件夹下全部n词库文件 ``` #引入=dic/* $a$ ``` ### 长度 📏 **文本长度是单字符算作1单位** ``` $文本长度 内容$ $长度 内容$ ``` ### 正则 🧩 正则匹配内容返回json ``` $正则 正则 内容$ ``` 正则匹配只会返回true/false ``` $正则匹配 正则 内容$ ``` ### 终端 💻 ``` 中文:UTF-8、GBK/GB18030、Big5 日文:Shift-JIS、EUC-JP、ISO-2022-JP 韩文:EUC-KR 西欧:ISO-8859-1、Windows-1252 ``` ``` cmd:$终端.创建 ./NebulaData/forFmt.exe$ // 终端返回乱码定义解码器 // $终端.解码器 %cmd% GBK$ // 终端临时环境变量 // $终端.变量 %cmd% cxk=ok$ // $终端.输入 %cmd% 内容$ // 等待执行完毕获取全部输出 $终端.执行 %cmd%$ // 挂载后台执行不返回 // $终端.异步执行 %cmd%$ // 用于监听 // $终端.监听执行 %cmd% private/cmd.n$ // $终端.断开 %cmd%$ ``` 会卡死线程等待输入后执行 ``` $打印 等待输入$ a:$终端等待输入$ $打印 内容%a%$ 内容%a% ``` ### 复读 🔁 ``` $复读 [文本] [次数]$ ``` ### SMTP邮件 📧 ``` $邮件 链接 端口 账号 密码 目标账号 发送头部$ ``` 发送QQ邮箱样板 ``` 文本>发送=%val5% Subject:标题 From:小啤酒 <2960965389@qq.com> 成功 <文本 $邮件 smtp.qq.com 587 2960965389@qq.com xxxxx 2960965389@qq.com %发送%$ ``` ### 特殊符号 🔣 | 编号 | 符号 | | ---- | ---- | | 0 | $ | | 1 | % | | 2 | : | | 3 | 空格 | | 4 | \t | | 5 | \n | | 6 | ; | | 7 | [ | | 8 | ] | | 9 | _ | > 可以让你在函数中,不用写多余赋予值,然后用变量传入。 ### 回调词库 🔄 > 异步词库可以配合延迟做调用 ``` $执行词库文件 [文件路径] [触发] [独立/继承/继承函数/互通]$ $执行网页词库文件 [文件路径]$ $执行PHP网页词库文件 [文件路径]$ ``` ### 调用 🔗 ``` [内部]test ok Main // 调用输出会打印到终端 $调用 [1000/毫秒] test$ $回调 test$ ``` **独立** 默认此方法,可以留空。 ``` [指定执行]不会拥有局部[变量]和[函数] ``` **继承** ``` [指定执行]的词库会继承[变量]和[函数] ``` **继承函数** ``` [指定执行]的词库会继承[函数] ``` **互通** ``` 会继承[函数] 互通[变量] [指定执行]完的词库中变量可以影响到[执行] ``` ### Js 🟨 **支持库** ``` Buffer setTimeout setInterval console url require ``` ,来分割参数 从参数0开始 a,b,c ``` a:1 --js a+a --end ``` ### MYSQL 🐬 ``` _MYSQL_账号:root _MYSQL_密码:941331b62d54a7f7 _MYSQL_地址:172.20.167.249 $mysql sys PING$ ``` ``` sql::CREATE DATABASE 数据库名称; $mysql %sql%$ ``` ``` sql::INSERT INTO 表 (name, data) VALUES (?, ?) $mysql 数据库名称 %sql% 绑定内容1 绑定内容2$ ``` ### SQLITE 📦 ``` 查询语句 c:""" SELECT name, email FROM users """ $sqlite database/文件.db %c%$ 插入语句 b:""" INSERT INTO users (name, email) VALUES (?, ?) """ $sqlite database/文件.db %b% a b$ 创建表语句 a:""" CREATE TABLE IF NOT EXISTS users ( name TEXT NOT NULL, email TEXT NOT NULL UNIQUE ) """ $sqlite database/文件.db %a%$ ``` 将数据库存放在线程变量_DB_SQLITE,想要直接清空直接在线程变量设置空即可,或者在程序重新启动时候会自动清空。 ``` a:""" CREATE TABLE IF NOT EXISTS users ( name TEXT NOT NULL, email TEXT NOT NULL UNIQUE ) """ b:""" INSERT INTO users (name, email) VALUES (?, ?) """ c:""" SELECT name, email FROM users """ // 获取全部表 d:PRAGMA table_list $sqlite :内存: %a%$%换行% $sqlite :内存: %b% a b$%换行% $sqlite :内存: %c%$%换行% $sqlite :内存: %d%$ ``` ### 腾讯接口 🔗 ``` 接口:$腾讯.接口 [id] [key] [域名] [服务名] [接口名] [版本] [地域|可留空]$ $腾讯.调用 %接口% {"json":"数据"}$ ``` ### 腾讯QQ机器人 🤖 调用用法 ``` [内部]打招呼 我是机器人! 你好 你好! $调用 500 打招呼$ ``` 发送图文消息 ``` 测试 文本 ±img=database/img.png± ``` 群变量 ``` %QQ% %群号% %来源% %头像% ``` 群函数 ``` // 群用 $群单发 [文本] [图片数据]$ // 私聊用 $私聊 [文本] [图片数据]$ // 其他地方用 $发送文本 [文本] [图片数据]$ $发视频 [视频数据]$ $发语音 [语音数据]$ ``` 频道变量 ``` %QQ% %群号% %子群号% %来源% %头像% %昵称% ``` 频道函数 ``` $发文本 [文本] [图片数据]$ ``` ## 哈基米 ``` $哈基米加密 [文本] [密钥]$ $哈基米解密 [文本] [密钥]$ ``` ## 读写图片 📷 ``` $写图片 [文件路径] [键] [值]$ $读图片 [文件路径] [键]$ ``` ## Json字典 📖 可以让你的json固定顺序生成 ``` // 初始化json可以留空 a:$字典.创建 [json]$ // 设置值,可以加空格设置多层键值 $字典.设置 %a% [键] [值]...$ $字典.获取 %a%$ ``` ## 读写词库 📚 ``` $读词库 [文件路径] [触发词] [是否正则|true/false]$ $写词库 [文件路径] [触发词] [内容]$ ``` ## 随机文件名和文件夹名 📂 ``` $随机文件名 [文件夹路径]$ $随机文件夹名 [文件夹路径]$ ``` ## sha256 📦 ``` // 返回[]Byte $sha256 [文本]$ ``` ## []Byte操作 📦 ``` $Byte转String [Byte]$ $Byte生成 [文本]$ ``` ## MIME类型 📦 ``` $MIME类型 [文件后缀|文件路径]$ ```