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 🙏

© 2026 – Pkg Stats / Ryan Hefner

koishi-plugin-aria2-plus

v0.0.5

Published

Koishi 的 aria2 下载服务插件

Downloads

406

Readme

koishi-plugin-aria2-plus

项目介绍

中文

这是一个为 Koishi 机器人框架开发的 aria2 下载服务插件,通过 HTTP JSON-RPC 与 aria2 守护进程通信,并支持可选的 WebSocket 实时事件推送。插件完全封装了 aria2 的所有核心 JSON-RPC 方法。

English

This is an aria2 download service plugin developed for the Koishi bot framework. It communicates with the aria2 daemon via HTTP JSON-RPC and supports optional WebSocket real-time event push. The plugin fully encapsulates all of aria2's core JSON-RPC methods.

安装

npm install koishi-plugin-aria2-plus

前置要求:
必须先在服务器上安装并启动 aria2 守护进程,并启用 RPC 模式。
示例启动命令:

aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all --rpc-secret=你的密钥

配置项说明

| 配置项 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | host | string | localhost | aria2 RPC 服务地址 | | port | number | 6800 | aria2 RPC 服务端口 | | secure | boolean | false | 是否使用 HTTPS 连接 | | path | string | /jsonrpc | RPC 接口路径(需与 aria2.conf 中一致) | | secret | string | '' | RPC 密钥(对应 aria2 的 rpc-secret) | | timeout | number | 10000 | 单次请求的超时时间(毫秒) | | retry | number | 2 | 网络错误时的重试次数 | | events | boolean | false | 是否启用下载事件通知。开启后会自动尝试使用 WebSocket,若环境不支持则自动降级为轮询模式(默认每 3 秒检查一次,可通过 pollInterval 调整) | | pollInterval | number | 3000 | 轮询模式下的检查间隔(毫秒,最小 500) | | debug | boolean | false | 是否开启调试日志(打印完整请求与响应) |

在其他插件中使用

本插件作为一个服务(Service)提供,所有封装好的方法都可以通过 ctx.aria2 直接调用。

1. 声明依赖

import { Context } from 'koishi'

export const inject = ['aria2']  // 声明依赖

export function apply(ctx: Context) {
  // 这里可以安全地使用 ctx.aria2
}

2. 基本调用示例

ctx.command('download <url>')
  .action(async ({ session }, url) => {
    const gid = await ctx.aria2.addUri([url], { dir: '/downloads' })
    return `任务已添加,GID: ${gid}`
  })

3. 监听下载事件

ctx.on('aria2/event', (event) => {
  if (event.event === 'complete') {
    // 下载完成后执行操作
  }
})

4. API 方法速查

任务管理

addUri(uris, options?) : Promise<string>
addTorrent(torrent, uris?, options?) : Promise<string>
addMetalink(metalink, options?) : Promise<string>
pause(gid) : Promise<string>
pauseAll() : Promise<string>
forcePause(gid) : Promise<string>
forcePauseAll() : Promise<string>
unpause(gid) : Promise<string>
unpauseAll() : Promise<string>
remove(gid) : Promise<string>
forceRemove(gid) : Promise<string>
changeOption(gid, options) : Promise<string>
changeUri(gid, fileIndex, delUris, addUris) : Promise<string>
getOption(gid) : Promise<Record<string, string>>
changePosition(gid, pos, how) : Promise<number>

状态查询

tellStatus(gid, keys?) : Promise<Aria2Status>
tellActive(keys?) : Promise<Aria2Status[]>
tellWaiting(offset?, num?, keys?) : Promise<Aria2Status[]>
tellStopped(offset?, num?, keys?) : Promise<Aria2Status[]>
tellAll(keys?) : Promise<{active, waiting, stopped}>
getFiles(gid) : Promise<Aria2File[]>
getPeers(gid) : Promise<Record<string, any>[]>
getServers(gid) : Promise<Record<string, any>[]>

全局操作

getGlobalStat() : Promise<GlobalStat>
getGlobalOption() : Promise<Record<string, string>>
changeGlobalOption(options) : Promise<string>
purgeDownloadResult() : Promise<string>
removeDownloadResult(gid) : Promise<string>
getSessionInfo() : Promise<SessionInfo>
saveSession() : Promise<string>
shutdown() : Promise<string>
forceShutdown() : Promise<string>
getVersion() : Promise<{version, enabledFeatures}>
multicall(methods) : Promise<any[]>

所有方法均返回 Promise,并有完整的 TypeScript 类型定义。

依赖关系

  • 必需(peerDependencies)koishi >= 4.18.7
  • 可选(optional)ws(当 events 开启时需要,用于连接 aria2 的 WebSocket)

事件系统

插件支持以下下载事件,可通过 ctx.on('aria2/event', handler) 监听:

| 事件名 | 触发时机 | |--------|----------| | start | 下载任务开始 | | pause | 下载任务暂停 | | stop | 下载任务停止 | | complete | 下载任务完成 | | error | 下载任务出错 | | btComplete | BT 下载完成 |

事件对象格式:{ gid: string, event: string, ...其他字段 }

  • WebSocket 模式(推荐):实时推送,延迟最低
  • 轮询模式:当 WebSocket 不可用时自动降级,通过 pollInterval 配置检查间隔,首次轮询仅建立基线,后续增量检测状态变化

项目贡献者 (Contributors)

| 贡献者 | 贡献内容 | |--------|----------| | Minecraft-1314 | 插件完整开发 |

(欢迎通过 Issues 或 PR 成为贡献者)

许可协议 (License)

本项目采用 MIT 许可证,详情参见 LICENSE 文件。

This project is licensed under the MIT License, see the LICENSE file for details.

支持我们 (Support Us)

如果这个项目对您有帮助,欢迎点亮右上角的 Star ⭐ 支持我们,这将是对所有贡献者最大的鼓励!

If this project is helpful to you, please feel free to star it in the upper right corner ⭐ to support us, which will be the greatest encouragement to all contributors!