npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cqhttp

v1.2.0

Published

A Node SDK for CQHTTP.

Downloads

46

Readme

CQHTTP Node SDK

License NPM NPM Downloads

本项目为 酷Q 的 CQHTTP 插件的 Node SDK,封装了 web server 相关的代码,让使用 Node.js 的开发者能方便地开发插件。仅支持插件 4.0.0 或更新版本。

关于 CQHTTP 插件,见 richardchien/coolq-http-api

用法

首先安装 cqhttp 模块:

npm install --save cqhttp

然后在程序中使用:

const CQHttp = require('cqhttp');

const bot = new CQHttp({
    apiRoot: 'http://127.0.0.1:5700/',
    accessToken: '123',
    secret: 'abc'
});

bot.on('message', context => {
    bot('send_msg', {
        ...context,
        message: '哈喽~'
    });
});

bot.listen(8080, '127.0.0.1');

更详细的示例请参考 demo.js

创建实例

首先创建 CQHttp 类的实例,传入 apiRoot,即为 CQHTTP 插件的监听地址,如果你不需要调用 API,也可以不传入。Access token 和签名密钥也在这里传入,如果没有配置 CQHTTP 插件的 access_tokensecret 项,则不传。

事件处理

on() 方法用于添加对应上报类型(post_type)的回调函数,目前有三个上报类型 messagenoticerequest,一个上报类型可以有多个回调,收到上报时按添加顺序来调用。

回调函数接受一个参数 context,即为上报的数据,打印可查看其内容,具体数据字段含义见 事件上报

函数可以不返回值,也可以返回一个对象,会被自动作为 JSON 响应返回给 CQHTTP 插件,具体见 上报请求的响应数据格式。如果同一个上报类型添加了多个回调,只有最后一个有返回值的回调的返回值会被返回给插件。

API 调用

在设置了 api_root 的情况下,直接在 CQHttp 类的实例上就可以调用 API,第一个参数为要调用的接口(或者称为 action),第二个可选参数为一个对象用于传入参数,例如 bot('send_private_msg', { user_id: 123456, message: 'hello' }),这里的 send_private_msg 即为 /send_private_msg 发送私聊消息 中的 /send_private_msg。其它 API 见 API 描述

每个 API 调用最后都会由 axios 库来发出请求,如果网络无法连接,它可能会抛出一个异常,见 Handling Errors。而一旦请求成功,本 SDK 会判断 HTTP 响应状态码,只有当状态码为 200,且 status 字段为 okasync 时,会返回 data 字段的内容,否则也抛出一个异常(是一个简单对象),在这个异常中你可以通过 statusretcode 属性来获取 HTTP 状态码和插件的 retcode(如果状态码不为 200,则 retcode 为 undefined),具体响应状态码和 retcode 的含义,见 响应说明

运行实例

使用装饰器定义好处理函数之后,调用 bot.listen() 即可运行。这个方法第一个参数为监听端口,第二个参数为监听的 host,来指定服务端需要运行在哪个地址,然后在 CQHTTP 插件的配置文件中,在 post_url 项中配置此地址(http://host:port/)。

遇到问题

本 SDK 的代码非常简单,如果发现有问题可以参考下源码,可以自行做一些修复,也欢迎提交 pull request 或 issue。