Add the source code
This commit is contained in:
		
							
								
								
									
										162
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,146 +1,48 @@ | ||||
| [](https://stand-with-ukraine.pp.ua) | ||||
| ## Civita Discord Bot | ||||
|  | ||||
| # Civita | ||||
| Modular Discord.js v14 bot with MariaDB storage, Gemini AI, profanity filter, XP system, and slash commands. | ||||
|  | ||||
| Civita is a multifunctional and lightweight Discord bot built with **TypeScript**.   | ||||
| It’s designed to be fast, modular, and easy to maintain — providing essential utilities, moderation tools, and fun features for your Discord community. | ||||
| ### Requirements | ||||
| - Node.js 18.17+ | ||||
| - pnpm 8+ | ||||
| - MariaDB 10.5+ | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## ✨ Features | ||||
|  | ||||
| - 🧹 **Moderation** — Kick, ban, mute and manage your server with ease.   | ||||
| - 🎉 **Fun & Games** — Engage users with AI, QOTD(questions of the day), and other fun commands.   | ||||
| - ⚙️ **Customizable** — Easily configurable settings via /setup command.   | ||||
| - 🚀 **Lightweight & Fast** — Optimized with TypeScript for performance and maintainability. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🧰 Tech Stack | ||||
|  | ||||
| - [TypeScript](https://www.typescriptlang.org/)   | ||||
| - [Node.js](https://nodejs.org/)   | ||||
| - [Discord.js](https://discord.js.org/) | ||||
| - [Google-GenAI](https://aistudio.google.com/) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 📦 Installation | ||||
|  | ||||
| ### Prerequisites | ||||
| - Node.js v18 or later   | ||||
| - Discord Bot Token ([create one here](https://discord.com/developers/applications))   | ||||
| - PnPm | ||||
| - Google GenAI Key ([create one here](https://aistudio.google.com/api-keys)) | ||||
|  | ||||
| ### Setup | ||||
|  | ||||
| ```bash | ||||
| # Clone the repository | ||||
| git clone https://git.optimihost.com/NaChlorid/civita.git | ||||
| cd civita | ||||
|  | ||||
| # Install dependencies | ||||
| pnpm install | ||||
|  | ||||
| # Configure environment variables | ||||
| cp .env.example .env | ||||
| # Edit .env and add your Discord bot token | ||||
|  | ||||
| # Build the project | ||||
| pnpm run build | ||||
|  | ||||
| # Start the bot | ||||
| npx dist/index.js | ||||
| ```` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## ⚙️ Configuration | ||||
|  | ||||
| Your `.env` file should look like this: | ||||
|  | ||||
| ```env | ||||
| DISCORD_TOKEN=(DISCORD TOKEN) | ||||
| GEMINI_API_KEY=(GOOGLE GENAI KEY) | ||||
| DISCORD_CLIENT_ID=(DISCORD APPLICATION ID) | ||||
| ### Environment | ||||
| Create a `.env` file in the project root with: | ||||
|  | ||||
| ``` | ||||
| DISCORD_TOKEN= | ||||
| DISCORD_CLIENT_ID= | ||||
| GEMINI_API_KEY= | ||||
| DATABASE_HOST=127.0.0.1 | ||||
| DATABASE_PORT=3306 | ||||
| DATABASE_USER=(DATABASE USER) | ||||
| DATABASE_PASSWORD=(DATABASE PASSWORD) | ||||
| DATABASE_NAME=(DATABASE NAME) | ||||
| DATABASE_USER=root | ||||
| DATABASE_PASSWORD=changeme | ||||
| DATABASE_NAME=civita | ||||
| ``` | ||||
|  | ||||
| You can also customize command prefixes, logging options, and more depending on your setup. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🧑💻 Development | ||||
|  | ||||
| To start a development environment: | ||||
|  | ||||
| ### Install | ||||
| ```bash | ||||
| pnpm run dev | ||||
| pnpm install | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🧱 Project Structure | ||||
|  | ||||
| ``` | ||||
| civita | ||||
| ├── package.json | ||||
| ├── README.md | ||||
| ├── src | ||||
| │   ├── ai | ||||
| │   │   └── gemini.ts | ||||
| │   ├── commands | ||||
| │   │   ├── leaderboard.ts | ||||
| │   │   ├── moderation.ts | ||||
| │   │   ├── profile.ts | ||||
| │   │   ├── resetmemory.ts | ||||
| │   │   └── setup.ts | ||||
| │   ├── config | ||||
| │   │   └── env.ts | ||||
| │   ├── db | ||||
| │   │   ├── migrate.ts | ||||
| │   │   └── pool.ts | ||||
| │   ├── deploy-commands.ts | ||||
| │   ├── events | ||||
| │   │   ├── guildBanKickLog.ts | ||||
| │   │   └── messageCreate.ts | ||||
| │   ├── index.ts | ||||
| │   ├── scheduler | ||||
| │   │   └── qotd.ts | ||||
| │   └── types | ||||
| │       └── ambient.d.ts | ||||
| └── tsconfig.json | ||||
| ### Deploy Commands | ||||
| ```bash | ||||
| pnpm deploy | ||||
| ``` | ||||
|  | ||||
| --- | ||||
| ### Run (dev) | ||||
| ```bash | ||||
| pnpm dev | ||||
| ``` | ||||
|  | ||||
| ## 🧩 Contributing | ||||
| ### Features | ||||
| - `/setup` to enable/disable: moderation, ai, logs, qotd, profanity_filter | ||||
| - `/leaderboard`, `/profile` | ||||
| - `/ban`, `/kick`, `/timeout` | ||||
| - Profanity filter (toggle via `/setup`) | ||||
| - Bot answers when mentioned if AI enabled | ||||
| - Daily QOTD if enabled and channel set | ||||
| - Status updates to: watching (N) servers | ||||
|  | ||||
| Contributions are welcome! | ||||
| Feel free to fork this repository and submit a pull request. | ||||
| Make sure your code follows the existing style and passes all lint checks before submitting. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🪪 License | ||||
|  | ||||
| This project is licensed under the **MIT License**. | ||||
| See the [LICENSE](LICENSE) file for details. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 💬 Support | ||||
|  | ||||
| If you encounter issues or have suggestions, please open an issue on GitHub. | ||||
| You can also reach out via the Discord server (if available). | ||||
|  | ||||
| --- | ||||
|  | ||||
| > Civita — simple, modular, and made to elevate your Discord experience. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user