# Civita 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. --- ## ✨ 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) DATABASE_HOST=127.0.0.1 DATABASE_PORT=3306 DATABASE_USER=(DATABASE USER) DATABASE_PASSWORD=(DATABASE PASSWORD) DATABASE_NAME=(DATABASE NAME) ``` You can also customize command prefixes, logging options, and more depending on your setup. --- ## πŸ§‘β€πŸ’» Development To start a development environment: ```bash pnpm run dev ``` --- ## 🧱 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 ``` --- ## 🧩 Contributing 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). ---