# Kemoverse A gacha-style bot for the Fediverse built with Python. Users can roll for characters, trade, duel, and perhaps engage with popularity-based mechanics. Currently designed for use with Misskey. Name comes from Kemonomimi and Fediverse.

Fediverse Gacha Bot Logo

## 📝 Docs 👉 [**Start reading the docs**](./docs/index.md) 🤌 [**Install instructions for those in a rush**](docs/install.md) ## 🔧 Features ### ✅ Implemented - 🎲 Character roll system - 🧠 Core database structure for cards - 📦 Basic support for storing pulls per player - ⏱️ Time-based limitations on rolls - ⚠️ Explicit account creation/deletion ### 🧩 In Progress - 📝 Whitelist system to limit access ## 🧠 Roadmap [See our v2.0 board for more details](https://git.waifuism.life/waifu/kemoverse/projects/3) ### 🛒 Gameplay & Collection - 🔁 **Trading system** between players - ⭐ **Favorite characters** (pin them or set profiles) - 📢 **Public post announcements** for rare card pulls - 📊 **Stats** for cards - 🎮 **Games** to play - ⚔️ Dueling - 🧮 **Leaderboards** - Most traded cards - Most owned cards - Most voted cards - Most popular cards (via usage-based popularity metrics) - Users with the rarest cards ### 🎨 Card Aesthetics - 🖼️ Simple card template for character rendering - 🌐 Web app to generate cards from images ### 🌍 Fediverse Support ✅ Anyone from the fediverse can play, but the server only works using a Misskey instance. Want to rewrite the program in Elixir for Pleroma? Let us know! ## 🗃️ Tech Stack - Python (3.12+) - SQLite - Fediverse API integration (via Misskey endpoints) - Flask - Modular DB design for extensibility ## 💡 Philosophy The bot is meant to feel *light, fun, and competitive*. Mixing social, gacha and duel tactics. ```mermaid flowchart TD subgraph Player Interaction A1[Misskey bot] A2[Web] end subgraph Misskey B1[Misskey instance] end subgraph Bot C1[Bot core in Python] C2[Notification parser] C3[Gacha roll logic] C4[Database interface] C5[Misskey API poster] end subgraph Website D1[Flask backend] D2[User account system] D3[Image gallery] end subgraph Backend E1[Shared database] E2[Virtual environment] E3[Debian Linux server] end A1 <-->|Send or receive mention| B1 B1 -->|Send mention| C2 C2 -->|Command and information| C3 C3 <-->|Ask for command information and confirmed roll setting| C4 C4 <--> E1 C3 -->|Command result and info| C5 C5 -->|Resulting Mention| B1 A2 --> D1 D1 --> D2 D1 --> D3 D2 --> E1 D3 --> E1 C1 --> E2 D1 --> E2 E1 --> E3 B1 --> E3 ```