2026年基于oicq的Koa风格QQ机器人开发框架koa-oicq-提供中间件机制和上下文封装-简化QQ机器人开发流程-支持异步处理和事...

基于oicq的Koa风格QQ机器人开发框架koa-oicq-提供中间件机制和上下文封装-简化QQ机器人开发流程-支持异步处理和事...koa oicq kocq 开发文档 前言 koa oicq 是基于 takayama lily oicq 所开发用于方便开发者的框架 正如项目名称一样 本框架是模仿 koa 所开发的 使用 npm install koa oicq or yarn add koa oicq 快速使用例子 const kocq require koa oicq const app new

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

# koa-oicq/kocq开发文档

前言:koa-oicq是基于takayama-lily/oicq所开发用于方便开发者的框架。正如项目名称一样,本框架是模仿koa所开发的。

使用:npm install koa-oicq or yarn add koa-oicq

快速使用例子:

const kocq = require('koa-oicq'); const app = new kocq(10001); // 号 // 必须调用next才会调转到下一个中间件,原理同koa app.use(async (ctx, next) => { ctx.reply('hello world!') await next() }); app.use(async (ctx, next) => if (ctx.postType === 'request') { console.log(ctx.event) // requestEvent // ...... } if (ctx.postType === 'notice') { console.log(ctx.event) // noticeEvent // ...... } await next() }); app.use(async (ctx, next) => { await next() }); // on支持监听原生oicq所有事件 app.on('message.private', function (event) { console.log(this); // this指向当前登录bot event.reply('私聊消息') }) // 调用后会在data目录下生成二维码,登录扫码,控制台回车即可登录 app.listen(); 

ctx(当前消息的上下文对象)

ctx.event原生oicq事件对象

ctx.bot当前客户端机器人对象(用有原生bot的所有api)

ctx.message消息构成对象(数组),同ctx.event

ctx.rawMsg原生消息(字符串),同ctx.event

ctx.reply当前事件对象回复函数,同ctx.event

ctx.groupId如果为群消息则为群id,同ctx.event

ctx.groupName如果为群消息则为群id,同ctx.event

ctx.userId发送者id,同ctx.event

ctx.msgId消息id(可用于撤回消息等),同ctx.event

ctx.botId当前bot的id,同ctx.event

原生监听事件on(新增error | end 事件)

就相当于原生的on,只不过回调多了一个bot对象

中间件支持

中间件开发(2.0取消自带中间件可以使用koa-oicq-message)

中间件支持同步和异步模式,传入一个函数,会传参ctx,next

中间件支持传入一个函数, 或者一个带有install函数的对象(注意:该install函数提供一个参数函数,调用该参数函数并传入函数对象)

它可以这样使用

class Mid { callback(){ return async function(ctx, next) { await next(); } } install(add) { add(this.callback()); } } let mid = new Mid() app.use(mid); 

自带中间件 (message、request、notice)(已废弃)

system事件,我们推荐使用原生oicq监测

const KoaOicq = require('koa-oicq'); const { createEvent } = require('koa-oicq'); const client = new KoaOicq(); // 创建专门监听notice的子中间件 const not = createEvent('notice'); not.use(async (ctx, next) => { console.log('notice'); await next(); }) client.use(not); client.listen('') // request同理 

当然你可以自定义条件性子中间件(满足一定条件才会走该子中间件的所有中间件)(已废弃)

const KoaOicq = require('koa-oicq'); const app = new KoaOicq(); const { customEvent } = KoaOicq; const custom = customEvent((ctx) => ); custom.use(async (ctx, next) => { console.log('我被调用了~~~'); await next(); }) client.use(custom); client.listen('') 

插件支持

插件定义

必须传入一个返回中间件函数的函数(这样你可以在第一层函数中传入你想要自定义的参数)

或者传入一个构造函数(带有install方法)

 function funmid(){ return function(ctx, next){ next() } } // 传入函数 app.plugin('name', funmid); class Mid { callback(){ return async function(ctx, next) { await next(); } } install(add) { add(this.callback()); } } // 传入构造函数 app.plugin('name', Mid); 

当然,并不是注册了插件就能使用,必须使用app.use去安装插件

// 传入插件名称,和若干参数(插件调用时需要传入的参数) app.use('name', arg1, args2); 

插件卸载

安装插件后同时还支持卸载插件

app.unuse('name') app.unuse(mid) 

插件库支持(目前支持本地插件库和node_modules)

plugins/test.js

// ./plugins/test.js module.exports = function (log) next(); } } 
app.source(path.resolve(__dirname, './plugins')); //app.source('./plugins'); // 首先去定义的source插件库寻找 app.use('test', 'success'); // 其次去node_modules寻找 app.use('kocq-console'); // kocq-console是已经开发的插件 

错误捕获

koa-oicq不仅支持全局错误捕获,同时也支持子中间件(废弃)的错误捕获

 // 中间件错误监听 app.on('error', (err, ctx)=>{ }); 

生命周期

目前只支持每个事件对象完成所有中间件轮询后的生命周期回调

app.on('end', (ctx)=>{ console.log('结束了') }) 

后序:如果涉及到不懂的api请去oicq查看文档,欢迎大家给一些建议,本人在校大二彩笔一枚,哈哈哈

小讯
上一篇 2026-04-27 23:26
下一篇 2026-04-27 23:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/278809.html