{"id":23919297,"url":"https://github.com/rawfish69/nori","last_synced_at":"2026-05-12T01:03:59.009Z","repository":{"id":64174918,"uuid":"570683087","full_name":"RawFish69/Nori","owner":"RawFish69","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-20T23:12:02.000Z","size":4389,"stargazers_count":23,"open_issues_count":0,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T00:22:32.468Z","etag":null,"topics":["discord-bot","hikari-lightbulb","hikari-py","webapp","wynncraft"],"latest_commit_sha":null,"homepage":"https://nori.fish","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RawFish69.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-11-25T20:13:00.000Z","updated_at":"2025-03-20T23:12:06.000Z","dependencies_parsed_at":"2023-10-12T06:14:48.836Z","dependency_job_id":"6bd1e43d-7fae-4155-ac33-6b6049ddae10","html_url":"https://github.com/RawFish69/Nori","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RawFish69%2FNori","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RawFish69%2FNori/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RawFish69%2FNori/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RawFish69%2FNori/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RawFish69","download_url":"https://codeload.github.com/RawFish69/Nori/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248478686,"owners_count":21110748,"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","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":["discord-bot","hikari-lightbulb","hikari-py","webapp","wynncraft"],"created_at":"2025-01-05T14:39:47.298Z","updated_at":"2026-05-12T01:03:58.996Z","avatar_url":"https://github.com/RawFish69.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nori\n\n[![Status](https://img.shields.io/badge/status-active-success)](https://nori.fish)\n[![Bot](https://img.shields.io/badge/discord%20bot-verified-5865F2?logo=discord\u0026logoColor=white)](https://discord.com/discovery/applications/873677970928193568)\n[![License](https://img.shields.io/badge/license-AGPL--3.0-green)](LICENSE)\n\n### Discord bot, Web app, and APIs for Wynncraft.\n\nNori started as a Discord bot in 2022. Today it includes the bot, Nori-Web, public docs, and APIs used by Wynncraft community developers.\n\u003e  As of early 2026, Nori is the **largest Wynncraft Discord bot**, serving **more than 3,000 servers**.\n\n## Quick Start\n\n- [Add Nori to Discord](https://discord.com/discovery/applications/873677970928193568)\n- [Visit Nori Web](https://nori.fish)\n- [Read API Docs](https://nori.fish/docs/)\n- [Join the Community Discord](https://discord.gg/eDssA6Jbwd)\n\n## Code Development\n\nThe repository keeps the **Discord bot** and **web-facing files** in separate directories:\n\n```text\nsrc/\n  bot/  Python Discord bot and command implementation\n  web/  Separate static web interface and public docs\n  db/   Backend notes and development/test utilities\n```\n\nThe bot lives in `src/bot`. It uses **Hikari**, **Lightbulb**, and **Miru** for Discord commands and interactive components. Shared Wynncraft logic lives in `src/bot/lib`, command modules live in `src/bot/lib/commands`, and command registration is handled by `src/bot/lib/commands/loader.py`.\n\nTo run the bot locally:\n\n```powershell\ncd src/bot\npython -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -r requirements.txt\npython nori_bot.py\n```\n\nConfiguration is loaded from `~/.env` by `src/bot/lib/config.py`. **At minimum**, a local bot needs a Discord token:\n\n```env\nNORI_TOKEN=your_discord_bot_token\n```\n\n**Optional integrations** use additional variables such as `NORI_GPT_KEY`, `WYNN_BOT_TOKEN`, `WYNN_SOURCE_TOKEN`, `LOG_CHANNEL_ID`, and `BOT_OWNER_ID`. Some **production data files are not committed**, so data-heavy commands may need local fixtures, public API calls, or maintainer-provided data before they behave exactly like the hosted bot.\n\nFor more bot contributor notes, see [src/README.md](src/README.md) and [src/bot/README.md](src/bot/README.md).\n\n## Working on Commands\n\nMost bot work follows this path:\n\n1. Add or update command behavior in `src/bot/lib/commands`.\n2. Reuse shared helpers from `src/bot/lib` instead of duplicating API, rendering, or parsing logic.\n3. Register new command modules in `src/bot/lib/commands/loader.py`.\n4. Update `src/web/docs/commands.md` when a public slash command documented on the website changes.\n5. Keep **secrets**, **deployment data**, **generated caches**, and **private API tokens** out of commits.\n\nThe web app is static and can be previewed with any local static server:\n\n```powershell\npython -m http.server 8000 -d src/web\n```\n\nThen open `http://localhost:8000`.\n\n## Links\n\n- **Web Interface**: [nori.fish](https://nori.fish)\n- **Discord Bot**: [Add to Server](https://discord.com/discovery/applications/873677970928193568)\n- **Kook Bot** (China): [Bot Market](https://www.botmarket.cn/bot/28)\n- **API Documentation**: [nori.fish/docs](https://nori.fish/docs/)\n- **Community Discord**: [Join Server](https://discord.gg/eDssA6Jbwd)\n- **GitHub**: [RawFish69/Nori](https://github.com/RawFish69/Nori)\n\n## Source Code Notice\n\nNori's **bot source** is published for community development under the repository license. The web files in this repository are **separate from the Discord bot runtime**. **Production credentials**, **private deployment configuration**, **generated runtime data**, and infrastructure-specific files are intentionally not included. Please do not commit secrets or data pulled from private services.\n\n## Contributing\n\nPull requests should be focused, include a short summary and testing notes, and avoid mixing **Discord bot** changes with **Nori-Web** changes unless needed. Do not commit **secrets**, **generated caches**, production config, or private runtime data.\n\n## Contact\n\n- **Discord**: rawfish69\n- **GitHub**: [@RawFish69](https://github.com/RawFish69)\n\n## License\n\nNori is licensed under the [GNU Affero General Public License v3.0](LICENSE).\n\n---\n\n*Made for the Wynncraft community*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frawfish69%2Fnori","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frawfish69%2Fnori","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frawfish69%2Fnori/lists"}