From f72092b12bb63842c58f22ce38ee7c977dda7258 Mon Sep 17 00:00:00 2001 From: HPCesia Date: Tue, 17 Dec 2024 20:52:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BD=BF=E7=94=A8SQLite=20?= =?UTF-8?q?=E7=9A=84=20koishi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/koishi/1.15.0/data.yml | 17 +++++++++++++++++ apps/koishi/1.15.0/docker-compose.yml | 18 ++++++++++++++++++ apps/koishi/README.md | 25 +++++++++++++++++++++++++ apps/koishi/data.yml | 20 ++++++++++++++++++++ apps/koishi/logo.png | Bin 0 -> 11460 bytes 5 files changed, 80 insertions(+) create mode 100644 apps/koishi/1.15.0/data.yml create mode 100644 apps/koishi/1.15.0/docker-compose.yml create mode 100644 apps/koishi/README.md create mode 100644 apps/koishi/data.yml create mode 100644 apps/koishi/logo.png diff --git a/apps/koishi/1.15.0/data.yml b/apps/koishi/1.15.0/data.yml new file mode 100644 index 0000000..094661f --- /dev/null +++ b/apps/koishi/1.15.0/data.yml @@ -0,0 +1,17 @@ +additionalProperties: #固定参数 + formFields: + - default: 5140 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + required: true + type: text \ No newline at end of file diff --git a/apps/koishi/1.15.0/docker-compose.yml b/apps/koishi/1.15.0/docker-compose.yml new file mode 100644 index 0000000..66cf792 --- /dev/null +++ b/apps/koishi/1.15.0/docker-compose.yml @@ -0,0 +1,18 @@ +services: + koishi: + image: koishijs/koishi:v1.15.0 + container_name: ${CONTAINER_NAME} + restart: always + environment: + - TZ=${TIME_ZONE} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:5140 + volumes: + - ./data:/koishi + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/koishi/README.md b/apps/koishi/README.md new file mode 100644 index 0000000..3b6d614 --- /dev/null +++ b/apps/koishi/README.md @@ -0,0 +1,25 @@ +# Koishi + +**Koishi** 是一个跨平台、可扩展、高性能的聊天机器人框架。 + +## 特性 + +### 开箱即用 + +Koishi 提供了高度便利的控制台,让你无需基础让你在几分钟之内搭建自己的聊天机器人。 + +- 提供在线插件市场,即使没有任何编程基础,也能轻松在控制台中下载安装插件 +- 支持 QQ,Telegram,Discord,飞书等主流聊天平台,支持多账户和跨平台数据互通 +- 随时随地通过控制面板监控运行状态,控制机器人的行为,甚至上号聊天 + +### 生态丰富 + +经过了长达四年的迭代,Koishi 已经发展出了丰富的插件生态和与之匹配的健壮系统。超过 1000 个官方和社区插件覆盖了机器人开发的方方面面,从平台支持、数据库、资源存储、网页控制台、状态管理到具体的业务功能一应俱全。无论你的目标是构建大型交互应用还是轻量级的辅助机器人,Koishi 都为你提供了最佳实践。如果担心在复杂的功能中迷失方向,我们也准备了细致的文档来提供帮助。 + +### 专为开发者打造 + +Koishi 更为开发者准备了众多专业功能,使插件开发者得以在各种复杂需求中构建规模化的解决方案。 + +- 类型支持:Koishi 完全基于 TypeScript 开发,拥有顶级的类型支持,丰富的代码提示让你在编写代码的时候甚至无需查看文档 +- 单元测试:所有核心功能均已经通过单元测试,既确保了可靠性,也为开发者提供了一套测试插件和定位问题的最佳实践 +- 模块热重载:开发 Koishi 插件时,只需轻点保存即可热重载,无需频繁重启机器人,如同前端开发一样丝滑顺畅 \ No newline at end of file diff --git a/apps/koishi/data.yml b/apps/koishi/data.yml new file mode 100644 index 0000000..1dbb4d2 --- /dev/null +++ b/apps/koishi/data.yml @@ -0,0 +1,20 @@ +name: Koishi +tags: + - 实用工具 +title: 跨平台、可扩展、高性能的聊天机器人框架 +type: 工具 +description: 跨平台、可扩展、高性能的聊天机器人框架 +additionalProperties: + key: koishi + name: Koishi + tags: + - Tool + shortDescZh: 跨平台、可扩展、高性能的聊天机器人框架 + shortDescEn: Cross-platform, extensive, high-performance chatbot framework + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://koishi.chat + github: https://github.com/koishijs/koishi + document: https://koishi.chat/zh-CN/manual/introduction.html \ No newline at end of file diff --git a/apps/koishi/logo.png b/apps/koishi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7c45cc5d65ba218695984414e77f882aadb1d0ab GIT binary patch literal 11460 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