# 📖 K AegisManhwa — Full Technical Documentation & Architecture Reference
## เอกสารและคู่มือการทำงานฉบับสมบูรณ์ (Bilingual Edition)
> **Language / ภาษา**: [🇹🇭 ภาษาไทย](#-ภาษาไทย-thai-version) | [🇬🇧 English](#-english-version)
---
# 🇹🇭 ภาษาไทย (Thai Version)
## 📑 สารบัญ (TH)
1. [ภาพรวมของระบบ (System Overview)](#1-ภาพรวมของระบบ-th)
2. [สถาปัตยกรรมและกลไกการซิงค์ข้อมูล (Architecture & Sync Pipeline)](#2-สถาปัตยกรรมและกลไกการซิงค์ข้อมูล-th)
3. [ฟีเจอร์การทำงานอย่างละเอียด (Full Feature Specifications)](#3-ฟีเจอร์การทำงานอย่างละเอียด-th)
4. [ตารางคำสั่ง Slash Commands ฉบับสมบูรณ์ (Command Reference)](#4-ตารางคำสั่ง-slash-commands-ฉบับสมบูรณ์-th)
5. [โครงสร้างฐานข้อมูลและการสำรองข้อมูล (Data Architecture)](#5-โครงสร้างฐานข้อมูลและการสำรองข้อมูล-th)
6. [การแก้ไขปัญหาที่พบบ่อย (Troubleshooting & FAQ)](#6-การแก้ไขปัญหาที่พบบ่อย-th)
---
### 1. ภาพรวมของระบบ (TH)
**K AegisManhwa** คือระบบบันทึกและซิงค์ความคืบหน้าการอ่านมังงะ มันฮวา และเว็บตูน (Personal Reading Tracker) บน Discord สำหรับนักอ่านยุคใหม่:
- **หมดปัญหาต้องจำชื่อเรื่องยาวๆ**: ระบบ Autocomplete อัจฉริยะดึงรายชื่อเรื่องที่คุณเคยบันทึกมาให้เลือกทันทีเมื่อเริ่มพิมพ์
- **หมดปัญหาพิมพ์อัปเดตทุกครั้งที่อ่านจบตอน**: มีปุ่มกด `[➕ อ่านจบแล้ว! ตอนถัดไป (+1 Ep)]` บนการ์ด ให้คุณกดอัปเดตได้ในคลิกเดียว
- **หมดปัญหารายการยาวล้นจอ**: ระบบแบ่งหน้า Pagination พร้อมปุ่ม ◀️ ▶️ เปิดดูได้อย่างลื่นไหล
- **หมดปัญหาไฟล์ข้อมูลพัง**: เขียนทับไฟล์ด้วย Safe Atomic Write พร้อมรักษาความเข้ากันได้กับฐานข้อมูลเดิม 100%
---
### 2. สถาปัตยกรรมและกลไกการซิงค์ข้อมูล (TH)
1. **Dynamic Autocomplete Engine**: เชื่อมต่อโดยตรงกับอินเด็กซ์รายชื่อเรื่องของผู้ใช้ เพื่อส่งข้อมูลกลับไปยัง Discord Gateway ภายในเสี้ยววินาที
2. **Stateful Interaction Buttons**: ใช้ Discord UI Buttons บันทึกตัวเลขตอนและอัปเดต Embed ข้อความแบบ Real-time โดยไม่ส่งข้อความใหม่ให้รกห้องแชท
3. **Regex Link Parser**: ถอดรหัสโครงสร้าง URL (เช่น `slug-episode`) เพื่อแยกชื่อเรื่องและเลขตอนมาเปรียบเทียบกับฐานข้อมูล
---
### 3. ฟีเจอร์การทำงานอย่างละเอียด (TH)
#### 3.1 การเพิ่มและติดตามเรื่องใหม่ (`/manhwa track`)
- บันทึกชื่อเรื่อง, ตอนที่อ่านถึง, ลิงก์หน้าอ่าน และสถานะ (กำลังอ่าน, จบแล้ว, พักไว้, มีแผนจะอ่าน)
#### 3.2 การเปิดหน้าอ่านค้างไว้ (`/manhwa read`)
- เรียกดูตอนที่อ่านค้างไว้ พร้อมแสดงปุ่ม `[➕ ตอนถัดไป]` และปุ่มลิงก์ `[🔗 เปิดหน้าอ่าน]`
#### 3.3 การตรวจสอบตอนล่าสุดจากลิงก์ (`/manhwa progress`)
- วางลิงก์หน้าเว็บหรือตอนที่เปิด บอทจะตรวจจับหมายเลขตอนและเทียบว่าตรงกับที่คุณบันทึกไว้หรือไม่
#### 3.4 รายการมังงะแบบแบ่งหน้า (`/manhwa list`)
- แสดงรายการที่ติดตามทั้งหมดโดยแบ่งหน้าละ 5 เรื่อง มีปุ่มกดสลับหน้า ◀️ ▶️ และบอกจำนวนเรื่องรวม
#### 3.5 การสำรองข้อมูล (`/manhwa export`)
- สร้างไฟล์ JSON ข้อมูลส่วนตัวของผู้ใช้ และส่งเป็นไฟล์แนบใน Discord ให้ดาวน์โหลดเก็บไว้ได้ทันที
---
### 4. ตารางคำสั่ง Slash Commands ฉบับสมบูรณ์ (TH)
| คำสั่ง | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
| `/manhwa track` | `title` *(จำเป็น)*, `episode` *(จำเป็น)*, `link`, `status` | เพิ่มเรื่องใหม่เข้าสู่รายการติดตาม |
| `/manhwa read` | `title` *(Autocomplete)* | เปิดการ์ดอ่านพร้อมปุ่ม +1 ตอนถัดไป |
| `/manhwa update` | `title` *(Autocomplete)*, `episode` *(จำเป็น)*, `link` | อัปเดตตอนล่าสุดของเรื่อง |
| `/manhwa progress` | `query` *(จำเป็น: ชื่อเรื่อง หรือ ลิงก์)* | ตรวจสอบตอนที่บันทึกไว้เทียบกับลิงก์ |
| `/manhwa list` | *(ไม่มี)* | แสดงรายการทั้งหมดแบบแบ่งหน้า ◀️ ▶️ |
| `/manhwa remove` | `title` *(Autocomplete)* | ลบเรื่องออกจากรายการ |
| `/manhwa export` | *(ไม่มี)* | ส่งออกข้อมูลสำรองส่วนตัวเป็นไฟล์ JSON |
| `/ping` | *(ไม่มี)* | ตรวจสอบความหน่วง Gateway |
| `/stats` | *(ไม่มี)* | ดูสถิตินักอ่านและจำนวนเรื่องรวม |
| `/help` | *(ไม่มี)* | แสดงคู่มือการใช้งานบอท |
---
### 5. โครงสร้างฐานข้อมูลและการสำรองข้อมูล (TH)
- จัดเก็บใน `data/manhwa_data.json` ด้วยโครงสร้างแบบ JSON Tree:
```json
{
"user_id": {
"ชื่อเรื่อง": {
"episode": 120,
"link": "https://...",
"status": "reading",
"updated_at": 1712345678
}
}
}
```
- รองรับการเข้ากันได้กับฐานข้อมูลเดิม 100% โดยไม่อนุญาตให้เกิดการเขียนทับที่ผิดพลาด
---
### 6. การแก้ไขปัญหาที่พบบ่อย (TH)
1. **Autocomplete ไม่ขึ้นชื่อเรื่อง**:
- ตรวจสอบว่าคุณได้พิมพ์คำสั่งเพิ่มเรื่องด้วย `/manhwa track` มาก่อนหรือไม่
2. **ปุ่มกด +1 ขึ้นเตือนว่าไม่ใช่เจ้าของรายการ**:
- เพื่อความปลอดภัยและการรักษาข้อมูล ผู้ที่กดปุ่มเลื่อนตอนต้องเป็นผู้ใช้เดียวกับที่เรียกคำสั่งเท่านั้น