其他

貢獻指南

歡迎參與 karin-plugin-kkk 嘅開發與貢獻

貢獻指南

感謝你對 karin-plugin-kkk 感興趣!我哋需要你嘅幫助來令呢個項目變得更好。

無論係修復 Bug、添加新功能,定係改進文檔,我哋都非常歡迎。

準備工作

喺開始之前,請確保你嘅開發環境滿足以下要求:

項目結構

本項目採用 Monorepo 結構,主要包含以下部分:

  • packages/core: 核心插件代碼 (karin-plugin-kkk),包含主要業務邏輯。
  • packages/template: React SSR 渲染器,生成 HTML 文件。
  • packages/amagi: 接口庫 (Git Submodule),處理各平台嘅 API 請求與簽名。
  • packages/docs: 文檔站點,基於 Next.jsFumadocs

packages/amagi 係一個 Git 子模塊。如果你需要修改 API 相關嘅邏輯(如簽名算法),請唔好直接修改該目錄。你需要前往 amagi 倉庫 提交 Pull Request。

架構說明

插件在 Karin 中的位置

karin-plugin-kkk 係 Karin 框架嘅一個功能插件,遵循 Karin 嘅插件規範開發。

消息處理流程

當用戶在群傾偈中發送包含平台連結嘅消息時,插件嘅處理流程如下:

核心模塊說明

Apps 命令層 - 負責註冊 Karin 命令,監聽消息並分發到對應嘅平台處理器。

src/apps/
├── tools.ts      # 視頻解析命令(抖音/B站/快手/小紅書)
├── push.ts       # 動態推送任務
├── qrlogin.ts    # 掃碼登錄功能
├── admin.ts      # 管理員命令
├── help.ts       # 幫助信息
└── update.ts     # 插件更新

Platform 平台層 - 每個平台獨立封裝,包含連結解析、數據獲取、評論處理等。

src/platform/
├── douyin/       # 抖音
├── bilibili/     # B站
├── kuaishou/     # 快手
└── xiaohongshu/  # 小紅書

Module 工具層 - 提供配置管理、數據庫操作、API 服務、網絡請求等通用功能。

src/module/
├── config/       # 配置管理
├── db/           # 數據庫操作
├── server/       # API 服務
└── utils/        # 工具函數

數據流向

開發流程

Fork 本倉庫

點擊項目主頁右上角嘅 Fork 按鈕,將倉庫 Fork 到你嘅 GitHub 帳戶下。

克隆倉庫

將你 Fork 後嘅倉庫克隆到本地。由於項目包含子模塊,克隆時需要初始化子模塊:

# 替換為你嘅 GitHub 用戶名
git clone --recursive https://github.com/你嘅用戶名/karin-plugin-kkk.git

# 或者如果你已經克隆咗倉庫但冇子模塊
git submodule update --init --recursive

安裝依賴

使用 pnpm 安裝所有依賴:

pnpm install

啟動開發環境

根據你要修改嘅內容,啟動相應嘅開發環境:

  • 開發插件核心 (packages/core):

    pnpm watch
  • 開發模板 (packages/template):

    pnpm template
  • 預覽文檔 (packages/docs):

    pnpm docs

提交代碼

我哋遵循 Conventional Commits 規範。

提交信息嘅格式如下:

<type>(<scope>): <subject>

例如:

  • feat(core): 支持解析新嘅分享連結
  • fix(template): 修復動態卡片樣式錯亂
  • docs: 更新貢獻指南

提交 Pull Request

  1. 推送到你嘅 Fork 倉庫:
    git push origin feature/amazing-feature
  2. 在 GitHub 上向原倉庫提交 Pull Request。

常見問題

如何更新子模塊?

如果你發現 packages/amagi 落後於上游,可以使用以下命令更新:

git submodule update --remote

遇到 TypeScript 類型錯誤?

嘗試重新構建整個項目或重新安裝依賴:

pnpm install
pnpm build

Last updated on

On this page