Add the source code

This commit is contained in:
OptimiDEV
2025-10-09 09:33:35 +02:00
parent 9425a34cb6
commit 30808f2124
19 changed files with 1582 additions and 130 deletions

162
README.md
View File

@@ -1,146 +1,48 @@
[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](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**.
Its 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.