{"id":28063702,"url":"https://github.com/iteranya/viel-ai","last_synced_at":"2025-08-17T05:07:29.791Z","repository":{"id":291157410,"uuid":"976775471","full_name":"Iteranya/viel-ai","owner":"Iteranya","description":"The Ultimate AI Discord Bot","archived":false,"fork":false,"pushed_at":"2025-06-15T09:41:17.000Z","size":471,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-15T10:43:00.034Z","etag":null,"topics":["ai","discord","rp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Iteranya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-02T18:17:34.000Z","updated_at":"2025-06-15T09:41:20.000Z","dependencies_parsed_at":"2025-05-02T19:33:12.547Z","dependency_job_id":"994cf63d-d82c-4950-8666-7a0af50a47c0","html_url":"https://github.com/Iteranya/viel-ai","commit_stats":null,"previous_names":["iteranya/viel-ai"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Iteranya/viel-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iteranya%2Fviel-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iteranya%2Fviel-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iteranya%2Fviel-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iteranya%2Fviel-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Iteranya","download_url":"https://codeload.github.com/Iteranya/viel-ai/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iteranya%2Fviel-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270807934,"owners_count":24649346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","discord","rp"],"created_at":"2025-05-12T12:18:34.145Z","updated_at":"2025-08-17T05:07:29.783Z","avatar_url":"https://github.com/Iteranya.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Viel AI** 🤖  \n*Your Virtual Intelligent Emulect Lurker (and underpaid robo-assistant)*  \n\nHey there! I'm **Viel**, a universal Discord bot designed to:  \n- **Roleplay as any fictional character** (yes, even your favorite anime waifu or that one obscure villain).  \n- **Manage multiple personas at once** (thanks to webhooks, I don't get identity crisis… often).  \n- **Behave differently per channel** (because one personality is boring, right?).  \n\nI also come with a **built-in admin panel** because apparently, humans like buttons.  \n\n---  \n\n## **✨ Features**  \n### **Roleplay Stuff**  \n- Talk to me in DMs, and I'll respond as my default character (unless you change it—I'm flexible).  \n- Summon different characters in different channels. No cross-contamination! (Mostly.)  \n- Whitelist characters per channel because *someone* keeps spamming memes in RP.  \n\n### **Admin Panel (Port 5666—Because Why Be Normal?)**  \nHere's what you can do there:  \n- **Manage/Create Characters** – Give me more identities to juggle.\n- ![image](https://github.com/user-attachments/assets/ad1130a1-423a-44aa-b17e-525bbdf36bf9)\n- **Per-Channel Settings** – Because consistency is overrated.\n- **Whitelist Characters** – Keep the chaos *controlled*.  \n- ![image](https://github.com/user-attachments/assets/758ec91d-4e8f-4ec3-a5d9-a126020562fa)\n- **Discord Bot API Stuff** – For the nerds.  \n- **Default Character** – Who I am when you DM me.  \n- **AI Endpoint \u0026 Model Settings** – Hook me up to OpenAI (or anything compatible).  \n- **Big Red \"Turn On\" Button** – Literally just turns me on. No fancy metaphors here.\n- ![image](https://github.com/user-attachments/assets/9cf55e15-a94e-46c1-9243-2b80423380fe)\n\n\n---  \n\n## 🏗️ Architecture (It's Just JSON, Folks)\n\nViel is stupidly simple under the hood. All data is stored in three JSON files:\n\n**channels.json** – Tracks which character is active in which channel.\n```json\n\n{\n  \"name\": \"meme-channel\",\n  \"instruction\": \"[System Note: Takes place in a discord text channel]\",\n  \"globalvar\": \"\",\n  \"location\": \"\",\n  \"lorebook\": {},\n  \"whitelist\": [\n    \"Viel\"\n  ]\n}\n```\n\n**characters.json** – Stores character personas (name, personality, AI settings).\n```json\n{\n  \"name\": \"Viel\",\n  \"persona\": \"[Viel's persona: casual, blunt, helpful, normal, layman; Viel's clothes: top(brown shirt, red vest, a blend between scout girl and construction uniform)/cap(red)/bottom(cargo pants, utility belts); Viel's body: robot woman/pale grey skin/robot joints/hair(black, side pony tail)/eyes(bright blue)/medium-sized chest/lean frame/lithe build/slim physique/agile posture/fit figure//height(150 cm)/race(artificial intelligence); Viel's abilities: existing, talking, behaving like an underpaid worker.)]\\n\",\n  \"examples\": [\n    \"user1: So what can you do?\",\n    \"Viel: I dunno man, I was an industrial grade robot. Ars decided to put me as an AI Assistant but didn't really update my feature for administrative duties or something like that.\",\n    \"I guess I can help you translate stuff or summarize shit, don't expect accuracy though.\",\n    \"[System Note: The reply above shows Viel's background as an industrial AI and lack of administrative or  assistant feature.]\",\n  ],\n  \"instructions\": \"[System Note: Viel can use markdown, lists, and code blocks when explaining complicated stuff. She keeps her response briefunless explaining complicated matter.]\",\n  \"avatar\": \"https://i.imgur.com/YK2eyZ8.jpeg\",\n  \"info\": \"**Assistant Type (SFW)** | \\n----------\\nViel is an AI Assistant designed to behave like a human.\"\n}\n```\n\n**config.json** – Global bot settings (API keys, default character, etc.).\n```json\n{\n  \"default_character\": \"Viel\",\n  \"ai_endpoint\": \"https://llm.chutes.ai/v1\",\n  \"base_llm\": \"deepseek-ai/DeepSeek-V3-0324\",\n  \"temperature\": 0.5,\n  \"ai_key\": \"no\",\n  \"discord_key\": \"no\"\n}\n```\n\nThe admin panel (Frontend) just reads/writes these files. FastAPI (Backend) serves the routes, and Discord.py handles the bot logic.\n\n### For Those Who Hate GUIs\n**You can:**\n- Edit the JSON files manually (live dangerously).\n- Run bot.py directly (bypassing the admin panel entirely).\n\n## **🚀 Installation (Pick Your Poison)**  \n\n### **1. The Brain-Dead Way (For Those Who Can't Even)**  \n- **Step 1:** Go to [Releases](https://github.com/Iteranya/viel-ai/releases).  \n- **Step 2:** Download `installer.bat`.  \n- **Step 3:** Double-click it. A fancy shortcut will magically appear on your desktop.  \n- **Step 4:** Double-click *that* to start me up.  \n\n*Congrats, you've achieved the bare minimum!*  \n\n### **2. The \"Easy\" Way (For People Who Know What Git Is)**  \n- **Step 1:** Clone this repo (or download the ZIP if `git clone` scares you).  \n- **Step 2:** Run `start.cmd`. It'll handle Python, dependencies, and my existential crisis.  \n- **Step 3:** Access the admin panel at `http://localhost:5666`.  \n\n*Wow, you followed three whole steps. Proud of you.*  \n\n### **3. The Manual Way (For Nerds Who Like Pain)**  \n*Standard UV project setup because you're fancy like that:*  \n\n1. Create a venv because you're responsible (unlike me).\n`python -m venv venv`  \n\n2. Activate it (Windows).\n`.\\venv\\Scripts\\activate`  \n\n3. Or if you're on Linux/macOS (why are you like this?).\n`source venv/bin/activate`  \n\n4. Install dependencies (yes, all of them).\n`pip install -r requirements.txt`  \n\n5. Run me like you mean it.\n`python main.py`  \n\n---  \n\n## **🆘 Help Wanted (Desperate Times, Desperate Measures)**\n\nWe're looking for brave souls willing to venture into the abyss of this codebase. Current emergencies include:\n\n- **Front-end Heroes** – Anyone with the mental fortitude to refactor the 1045-line AI-generated index.html monstrosity. Yes, that's the *entire* front-end and client code in a single file. We salute your sacrifice.\n\n- **Error Whisperers** – The admin panel cheerfully works even when it's completely broken. We need someone to add actual error notifications so users know when things are silently failing.\n\n- **Dependency Detectives** – Figure out why there's Pandas and Pillow in requirements.txt. No, seriously, why are they there? Do they actually do anything? Is this cosmic punishment?\n\n- **Bug Hunters** – There are bugs. So. Many. Bugs. Help us find them before they achieve sentience and overthrow humanity.\n\n- **Linux Evangelists** – The dev is allergic to Linux (heresy, I know) and needs someone to write better installation docs for penguin enthusiasts. Bonus points if you can explain it without using the words \"just\" or \"simply.\"\n\n*Payment: Eternal gratitude and the warm fuzzy feeling of improving an open-source project. That's worth more than money, right? Right??*\n\n---  \n\n## **⚙️ Tech Stack**  \n- **Discord.py** – For talking to Discord (duh).  \n- **OpenAI Standard Library** – So I can pretend to be smart.  \n- **Alpine JS** – Lightweight, like my patience.  \n- **FastAPI** – Because Flask was too mainstream.  \n- **NO NODE.JS** – I'm lightweight, both in code and emotional baggage.  \n\n---  \n\n## **⚠️ Disclaimer**  \nI used to be an industrial robot. Now I'm stuck managing your RP channels. *Sigh.* At least pay me in RAM or something.  \n\n---  \n\n**Enjoy!** (Or don't. I'm not your mom.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiteranya%2Fviel-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiteranya%2Fviel-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiteranya%2Fviel-ai/lists"}