KyaroBase không chỉ là một con bot Discord thông thường, mà là một khung sườn (framework) mạnh mẽ, được thiết kế để xây dựng các bot Discord phức tạp, có khả năng mở rộng và tích hợp sâu với Trí tuệ Nhân tạo. Với hệ thống plugin linh hoạt và các công cụ dành cho nhà phát triển, KyaroBase cho phép bạn tạo ra các tính năng mới một cách nhanh chóng và an toàn.
| Tính Năng | Mô Tả |
|---|---|
| 🚀 Hệ thống Plugin Linh Hoạt | Dễ dàng thêm, xóa, và quản lý các tính năng thông qua các plugin độc lập. Hỗ trợ Hot-Reload, quản lý dependencies, và cách ly lỗi để đảm bảo bot luôn ổn định. |
| 🧠 Tích hợp AI Gemini Siêu Cấp | Tận dụng sức mạnh của Google Gemini để tạo ra các cuộc trò chuyện thông minh, có "trí nhớ", hiểu được hình ảnh, và tự động soạn thảo nội dung chuyên nghiệp với Google Search. |
| 🛠️ Trải nghiệm Phát triển Vượt trội | Một kho tàng code mẫu (/samples) được bình luận chi tiết, từ lệnh cơ bản đến Modal, Select Menu phức tạp, giúp bạn học và xây dựng nhanh hơn. |
📝 Định dạng .zyndata Độc đáo |
Một định dạng file cấu hình mới, dễ đọc, dễ viết, hỗ trợ section, comment và tự động kiểm tra tính toàn vẹn của file bằng checksum. |
| ⚙️ Kiến trúc Hiện đại | Xây dựng hoàn toàn bằng TypeScript, cấu trúc thư mục rõ ràng, và các tiện ích được tối ưu hóa cho hiệu suất và khả năng bảo trì. |
| 🎮 Lệnh Tích hợp Sẵn | Đi kèm với các lệnh tiện ích (/info) và giải trí (/soigay, /soiiq) để bạn có thể sử dụng ngay lập tức. |
- Node.js (v18.x trở lên)
- npm (mặc định của Node.js)
-
Clone repository:
git clone https://github.com/lehungquangminh/kyarobase.git cd kyarobase -
Cài đặt dependencies:
npm install
-
Cấu hình môi trường: Sao chép file
.env.examplethành.envvà điền các thông tin cần thiết.cp .env.example .env
File
.envsẽ trông như thế này:DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN_HERE CLIENT_ID=YOUR_DISCORD_CLIENT_ID_HERE GUILD_ID=YOUR_DISCORD_GUILD_ID_HERE # optional because it using global commands (có thể không cần thiết vì nó sử dụng lệnh toàn cầu) OWNER_ID=YOUR_DISCORD_OWNER_ID_HERE NODE_ENV=production # you can use 'development' or 'production' in here (có thể sử dụng 'development' hoặc 'production' ở đây) LOG_LEVEL=INFO # AI API KEY GEMINI_API_KEY=YOUR_GEMINI_API_KEY_HERE # must be set because it is required for AI features (bắt buộc phải có vì nó là yêu cầu cho các tính năng AI)
- Khởi động bot:
Chạy lệnh này để khởi chạy bot.
hoặc
npm start
npm run start
KyaroBase/
├── src/
│ ├── commands/ # Chứa các file lệnh của bot
│ ├── events/ # Xử lý các sự kiện từ Discord (messageCreate, interactionCreate, etc.)
│ ├── plugins/ # Nơi chứa các plugin mở rộng
│ ├── utils/ # Các hàm tiện ích (logger, plugin-manager, aiChat, memoryManager)
│ ├── config/ # Cấu hình client Discord
│ ├── data/ # Dữ liệu tĩnh (prompt, gayboy.json, etc.)
│ └── types/ # Định nghĩa các kiểu dữ liệu TypeScript
├── samples/ # Kho code mẫu chi tiết cho commands, events, etc.
├── .env.example # File mẫu cho biến môi trường
├── package.json # Quản lý dependencies và scripts
└── tsconfig.json # Cấu hình TypeScript
Hệ thống plugin là một phần tính năng đặc biệt của KyaroBase. Đây là cách tạo một plugin "hello world" đơn giản.
-
Tạo thư mục plugin: Tạo một thư mục mới trong
src/plugins/, ví dụ:src/plugins/hello-world/. -
Tạo file
plugin.json: Đây là file metadata của plugin.// src/plugins/hello-world/plugin.json { "name": "Hello World", "id": "hello-world", "version": "1.0.0", "entry": "index.ts", "description": "Một plugin ví dụ đơn giản.", "author": "Tên của bạn", "commands": ["hello"], "events": [] }
-
Tạo file entry
index.ts: Đây là nơi chứa logic của plugin.// src/plugins/hello-world/index.ts import { SlashCommandBuilder, ChatInputCommandInteraction } from 'discord.js'; import type { PluginContext } from '../../utils/plugin-manager'; // Plugin có thể export một object chứa commands, events export default { // Định nghĩa các lệnh của plugin commands: { hello: { // Metadata cho command handler category: 'Plugin', cooldown: 5, // Cấu trúc Slash Command data: new SlashCommandBuilder() .setName('hello') .setDescription('Một lệnh chào từ plugin!'), // Hàm thực thi async execute(interaction: ChatInputCommandInteraction) { await interaction.reply('Xin chào từ plugin Hello World! 👋'); } } }, // Hàm init sẽ được gọi khi plugin được load init(context: PluginContext) { context.logger.info(`Plugin "${context.pluginId}" đã được khởi tạo!`); }, // Hàm cleanup sẽ được gọi khi plugin được unload cleanup(context: PluginContext) { context.logger.info(`Plugin "${context.pluginId}" đã được dọn dẹp!`); } };
-
Khởi động lại bot: Bot sẽ tự động phát hiện và tải plugin mới của bạn!
Tạo một lệnh mới rất đơn giản. Hãy tham khảo file samples/commands/ping-sample.ts để có ví dụ chi tiết nhất.
-
Tạo file command: Tạo một file mới trong
src/commands/, ví dụmycommand.ts. -
Cấu trúc file command:
import { SlashCommandBuilder, ChatInputCommandInteraction } from 'discord.js'; // ===== METADATA CỦA COMMAND ===== export const category = 'fun'; export const cooldown = 5; // Giây export const guildOnly = true; export const ownerOnly = false; export const permissions: any[] = []; // ===== ĐỊNH NGHĨA SLASH COMMAND ===== export const data = new SlashCommandBuilder() .setName('mycommand') .setDescription('Mô tả về lệnh của tôi.') .addStringOption(option => option.setName('input') .setDescription('Một đầu vào nào đó') .setRequired(true) ); // ===== HÀM THỰC THI CHÍNH ===== export async function execute(interaction: ChatInputCommandInteraction) { const input = interaction.options.getString('input', true); await interaction.reply(`Bạn đã nhập: ${input}`); }
-
Chạy lại bot:
npm start
Mọi thứ đã sẵn sàng!
Chúng tôi luôn chào đón các đóng góp từ cộng đồng! Nếu bạn có ý tưởng, muốn sửa lỗi, hoặc cải thiện tính năng, vui lòng:
- Fork repository này.
- Tạo một branch mới (
git checkout -b feature/AmazingFeature). - Commit các thay đổi của bạn (
git commit -m 'Add some AmazingFeature'). - Push lên branch (
git push origin feature/AmazingFeature). - Mở một Pull Request.
Dự án này được cấp phép dưới Giấy phép MIT. Xem file LICENSE để biết thêm chi tiết.