Loading... ## 教程背景 **<p style="color:red">由于发生了众所周知的机器人平台事件,本教程没有继续更新的必要了,故已停止更新</p>** <div class="tip inlineBlock info"> 本系列QQ开发教程使用[Native SDK][1] 基于全网最稳定的QQ机器人平台 [酷Q][2] 框架基础版本是我的[魔改版本][3](小改动) **<p style="color:red">支持打包为CPK</p>** 开发语言为C# </div> 平台和SDK的有点我就不介绍了,在SDK WIKI有很全的新手起步教程,本文针对有一定基础的,入门后的小伙伴 本文系列源码:[点我进入][4] ### SDK魔改点 1. 统一指令集(将指令划分为三个部分 what who how) 2. 使用反射优化指令路由逻辑 3. 精简一些不必要的SDK组件 #### 统一指令集 <div class="tip inlineBlock success"> 将文字指令按照空格(可以修改为其它分隔符),进行分割,第一部分为what 第二部分为who 第三部分为how, 可以理解为,做什么 对谁 怎么做 如:攻击 马化腾 狼牙棒 </div> 将原始指令使用空格(可更改)进行解析 > 如“攻击 麻花疼 狼牙棒” > 解析为 > what(要干啥):攻击 > who(对谁干):麻花疼 > how(怎么干):狼牙棒 > 无需自己解析指令! #### 反射优化路由 <div class="tip inlineBlock success"> 在ini文件中配置对应的“做什么”,所对应的方法名,实现命令直接执行,而不需要使用大批的if-else或switch语句,使的事件代码过长,防止**功能新增需要增加回调事件代码**、**功能故障需要禁用时重新打包插件**等问题,还可以实现**动态配置功能指令的触发** </div> 还在使用???? ```c# if(msg=="攻击"){ goAttack(fromQQ,target); } else if(msg=="防御"){ goDef(fromQQ,target); } ``` 不!可!以! 触发关键字修改还要改代码?? NO!! 多关键字触发同一个方法还在??? ```c# if(msg=="攻击"||msg=="打击"){ goAttack(fromQQ,target); } else if(msg=="防御"){ goDef(fromQQ,target); } ``` OH MY GOD!! 这里帮你解决! #### 精简SDK组件 <div class="tip inlineBlock success"> 1. 修改了极个别ini自带方法中容易抛出异常的方法 2. 去除了sqlite工具集,使用sqlite-net作为新的sqlite操作库(虽然酷Q自带sqlite) </div> #### 教程后继更新计划 结合具体应用场景,进行demo开发,内容会涉及 <div class="tip inlineBlock success"> 1. SDK各种接口的使用 2. HTTP接口的调用、结果的解析 3. 数据库的使用(主要是sqlite) 4. 在插件内嵌入restApi服务器,向外提供API,实现webhook接收、满足管理平台、用户平台的开发需求 5. 未完待续... </div> #### 1. 基础框架搭建 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://traceless.tech/index.php/archives/21/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://traceless.tech/usr/themes/handsome/assets/img/sj/7.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">【手摸手系列】教你开发QQ机器人 - 基础框架搭建</p> <div class="inster-summary text-muted"> 系列导航本文系列源码:点我进入一. 首先下载或克隆基础模板话不多说,git的基本使用,不再科普也可以直接使用我自用... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> #### 2. HTTP接口使用 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://traceless.tech/index.php/archives/22/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://gitee.com/DotNetTraceless/mydatadb/raw/master/img/80CpQS.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">【手摸手系列】教你开发QQ机器人 - HTTP接口使用</p> <div class="inster-summary text-muted"> 系列导航本文系列源码:点我进入本期目标以获取群公告为例,教你利用功能接口实现调用1.找接口这里我们采用“坊间流传的... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> #### 3. INI/SQLITE/JObjcet使用 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://traceless.tech/index.php/archives/24/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://gitee.com/DotNetTraceless/mydatadb/raw/master/img/20200327161822.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">【手摸手系列】教你开发QQ机器人 - SQLITE工具类</p> <div class="inster-summary text-muted"> 系列导航本文系列源码:点我进入本期目标结合实际场景使用sqlite-net1.整合Sqlite-net首先新建类库... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> [1]: https://github.com/Jie2GG/Native.Framework [2]: https://cqp.cc/ [3]: https://github.com/traceless0929/Native.Cqp.Csharp/tree/base [4]: https://github.com/traceless0929/Native.Cqp.Csharp/tree/demo Last modification:August © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请随意赞赏