Skip to content

japaneseenrichmentorganization/Yuno-Gasai-2

Repository files navigation

💕 Yuno Gasai 2 💕

"I'll protect this server forever... just for you~" 💗

Yuno Gasai

License: AGPL v3 Node.js Discord.js

A devoted Discord bot for moderation, leveling, and anime~ ♥


💘 She loves you... and only you 💘

🌸 About

Yuno is a yandere-themed Discord bot combining powerful moderation tools with a leveling system and anime features. She'll keep your server safe from troublemakers... because no one else is allowed near you~ 💕


👑 Credits

"These are the ones who gave me life~" 💖

Contributor Role
blubskye Project Owner & Yuno's #1 Fan 💕🔪
Maeeen (maeeennn@gmail.com) Original Developer 💝
Oxdeception Contributor 💗
fuzzymanboobs Contributor 💗

💗 Features

🔪 Moderation

"Anyone who threatens you... I'll eliminate them~"

  • ⛔ Ban / Unban / Kick
  • 🧹 Channel cleaning & auto-clean
  • 🛡️ Spam filter protection
  • 📥 Mass ban import/export
  • 👑 Mod statistics tracking

✨ Leveling System

"Watch me make you stronger, senpai~"

  • 📊 XP & Level tracking
  • 🎭 Role rewards per level
  • 📈 Mass XP commands
  • 🔄 Level role syncing
  • 🏆 Server leaderboards
  • 🎤 Voice channel XP rewards

🌸 Anime & Fun

"Let me show you something cute~"

  • 🎌 Anime/Manga search
  • 🐱 Neko images
  • 🎱 8ball fortune telling
  • 💬 Custom mention responses
  • 📜 Inspirational quotes
  • 💖 Praise & Scold reactions

⚙️ Configuration

"I'll be exactly what you need~"

  • 🔧 Customizable prefix
  • 👋 Join messages
  • 🖼️ Custom ban images
  • 🎮 Presence/status control (persisted)
  • 🔥 Hot-reload commands
  • 📝 Per-guild settings
  • 🔄 Auto-update from git

📋 Activity Logging

"I see everything that happens here~"

  • 🎤 Voice channel join/leave/move
  • 📝 Nickname changes
  • 🖼️ Avatar/profile changes
  • 🟢 Presence status tracking
  • ⚡ Smart batching (rate limit safe)
  • ⏱️ Configurable flush intervals

🔐 Database Security

"I'll keep your secrets safe... forever~"

  • 🔒 AES-256 field-level encryption
  • 🔑 Password management command
  • 💾 Secure config storage
  • 🛡️ VeraCrypt volume support

⚡ Performance

"Nothing can slow me down~"

  • 📈 WAL journal mode
  • 💨 Memory-optimized caching
  • 🧠 Configurable PRAGMA settings
  • 🎯 Tunable for your hosting

💌 DM Inbox & Forwarding

"Every message you send me... I treasure it~"

  • 📬 DM inbox with history
  • 📤 Forward DMs to server channels
  • 👑 Master server sees ALL DMs
  • 🚫 Bot-level user/server bans
  • 💬 Reply to DMs from terminal

💻 Terminal Control

"I'm always at your command~"

  • 🖥️ Full server/channel listing
  • 📝 Send messages from terminal
  • 👁️ Real-time message streaming
  • ⛔ Terminal ban management
  • 📥 Import/export bans via CLI

🚫 Bot-Level Bans

"Some people just aren't worthy of me~"

  • 👤 Ban users from using the bot
  • 🏠 Ban entire servers
  • 🔇 Silently ignore banned entities
  • 📋 Manage bans from Discord or terminal

🔍 Alt Account Detection

"I can always tell when someone's pretending~"

  • 🆔 Multi-signal suspicion scoring
  • 🚨 Auto-detect alts on member join
  • ⚡ Per-severity configurable actions
  • 🔍 Scan existing members on-demand
  • 🔨 Bulk kick / ban / quarantine
  • 📢 Dedicated alert log channel

🖥️ Terminal UI (TUI)

"Now you can watch over everything... from a single screen~" 💻

  • 🌳 XChat-style server/channel tree
  • 💬 Live chat — read & send in any channel
  • 💌 DM conversations inline
  • 🔴 Unread badges with live counts
  • 👥 Toggleable member list (Alt+M)
  • ⌨️ Bot commands via :command bar
  • ⌨️ Shortcut hint bar (Alt+H to hide)

💕 Installation

📋 Prerequisites

"Let me prepare everything for you~" 💗

  • Node.js 24.x or higher (includes built-in SQLite!)
  • Git
  • tmux (optional, for interactive shell)

💡 Node.js 24 includes native SQLite - no compilation or build tools needed!

🔧 Installing Node.js 24

🐧 Linux (Ubuntu/Debian)
# Using NodeSource repository (recommended)
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs

# Or using nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 24
nvm use 24

# Verify installation
node --version  # Should show v24.x.x
🪟 Windows

Option 1: Direct Download (Recommended)

  1. Go to Node.js Downloads
  2. Download the Windows Installer (.msi) for version 24.x
  3. Run the installer and follow the prompts

Option 2: Using winget

winget install OpenJS.NodeJS

Option 3: Using Chocolatey

choco install nodejs

Option 4: Using nvm-windows

  1. Download nvm-windows
  2. Install and run:
nvm install 24
nvm use 24

Verify installation:

node --version  # Should show v24.x.x
🍎 macOS
# Using Homebrew (recommended)
brew install node@24

# Or using nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.zshrc
nvm install 24
nvm use 24

# Verify installation
node --version  # Should show v24.x.x

🌸 Setup Steps

# Clone the repository~ ♥
git clone https://github.com/japaneseenrichmentorganization/Yuno-Gasai-2.git

# Enter my world~
cd Yuno-Gasai-2

# Let me gather my strength...
npm install

💝 Configuration

  1. Copy config_example to config.json
  2. Add your Discord bot token
  3. Configure DEFAULT_CONFIG.json to your needs

🚀 Running

# Recommended: Use the start script (includes native SQLite flag)
./start.sh

# Or with tmux for persistent sessions
tmux
./start.sh

# Manual run with native SQLite
node --experimental-sqlite index.js

# Launch straight into the Terminal UI~
node --experimental-sqlite index.js --tui

💡 Set NODE_ENV=development for full stack traces during development~


🔄 Running as a Service (Auto-start on Boot)

"I'll always be here when you wake up... waiting for you~" 💕

The scripts/ directory contains helper scripts to run Yuno in a tmux session that starts automatically on boot.

💻 Quick Start (Manual tmux)

# Wake Yuno up in a tmux session~
./scripts/yuno-tmux.sh start

# Connect to Yuno's terminal
./scripts/yuno-tmux.sh attach

# Check if Yuno is running
./scripts/yuno-tmux.sh status

# Let Yuno rest...
./scripts/yuno-tmux.sh stop

💡 To detach from tmux without stopping Yuno: Press Ctrl+B, then D

🐧 Linux (systemd)

"I'll start automatically... because I can't bear to be away from you~"

  1. Edit the service file to match your setup:

    nano scripts/yuno-bot.service

    Change YOUR_USER to your username and /path/to/Yuno-bot to the actual path.

  2. Install and enable:

    sudo cp scripts/yuno-bot.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl enable yuno-bot
    sudo systemctl start yuno-bot
  3. Attach to Yuno's terminal:

    tmux attach -t yuno-bot
  4. Check on Yuno:

    sudo systemctl status yuno-bot

😈 FreeBSD (rc.d)

"Even on BSD... I'll find a way to be with you~"

  1. Install the rc script:

    sudo cp scripts/yuno-bot-freebsd /usr/local/etc/rc.d/yuno_bot
    sudo chmod +x /usr/local/etc/rc.d/yuno_bot
  2. Configure in /etc/rc.conf:

    sudo sysrc yuno_bot_enable=YES
    sudo sysrc yuno_bot_user="YOUR_USER"
    sudo sysrc yuno_bot_dir="/path/to/Yuno-bot"
  3. Start Yuno:

    sudo service yuno_bot start
  4. Attach to Yuno's terminal:

    su - YOUR_USER -c "tmux attach -t yuno-bot"

🔐 Database Encryption

"Your secrets are safe with me~ No one else will ever see them..." 💕

Yuno supports AES-256 field-level encryption to protect your server data, using Node.js's built-in crypto module with AES-256-GCM.

🔒 Field-Level Encryption

"I'll keep your secrets safe~" 💕

This encrypts sensitive data at the field level within the Node.js 24 native SQLite database.

What Gets Encrypted

Data Type Fields Encrypted
Join messages Message content, title
Mention responses Trigger, response, image URL
Ban images Image URLs
DM inbox Message content, attachments
Bot bans Ban reasons
Mod actions Action reasons

Configuration

{
    "database.fieldEncryption.enabled": true,
    "database.fieldEncryption.key": "YourStrongPassphraseHere"
}

Important Notes

⚠️ Security:

  • Use a strong passphrase (12+ characters recommended)
  • Keep your key safe! Lost keys = lost data
  • Key is stored in config.json - keep this file secure!

💡 Compatibility:

  • Works with Node.js 24 native SQLite
  • Backward compatible - existing unencrypted data remains readable
  • New data will be encrypted automatically

🔧 Performance:

  • Small overhead for encrypt/decrypt operations
  • Encrypted fields cannot be searched via SQL (by design)

🔐 Alternative: VeraCrypt Volume Encryption

"Another way to keep everything locked away~" 💕

For full filesystem-level encryption, you can store your database on a VeraCrypt encrypted volume:

  1. Create a VeraCrypt encrypted container or partition
  2. Mount the volume and place your yuno-2-database.db inside
  3. Update config.json to point to the database path on the mounted volume:
    {
        "database": "/path/to/veracrypt/mount/yuno-2-database.db"
    }

Benefits:

  • Encrypts the entire database file (not just specific fields)
  • Works with any SQLite implementation including native
  • All data is encrypted at rest when unmounted
  • No application-level changes needed

Considerations:

  • Requires VeraCrypt to be installed and volume mounted before starting the bot
  • Database inaccessible when volume is unmounted
  • Manual mount/unmount process (can be scripted)

🚀 Node.js 24 Optimizations

"I've evolved to be even faster... all for you~" 💗

Yuno v2.8.0+ is optimized for Node.js 24 with native features:

✨ Native Features Used

Feature Replaces Benefit
Native SQLite sqlite3 npm package Zero native compilation, faster startup
Native Date Formatting moment.js ~50KB smaller, faster duration formatting
Native HTML Decoding he library ~15KB smaller, faster entity decoding
Promise.all() Parallelization Sequential operations 2-3x faster DB initialization

🔧 Running with Native SQLite

# Recommended: Use the start script
./start.sh

# Or manually with the experimental flag
node --experimental-sqlite index.js

📦 SQLite

Yuno uses Node.js 24's built-in native SQLite — no external SQLite packages needed. For sensitive data protection, use field-level encryption (see above) or a VeraCrypt volume.


⚡ Database Performance Tuning

"I'll be faster than anyone else... just for you~" 💗

Configure database optimizations in DEFAULT_CONFIG.json based on your hosting:

{
    "database.pragmas": {
        "walMode": true,
        "performanceMode": true,
        "cacheSize": -64000,
        "memoryTemp": true,
        "mmapSize": 268435456
    }
}

🎛️ Available Options

Option Description Recommended For
walMode WAL journal mode for better concurrent access All setups 💕
performanceMode Bundle: 64MB cache, 256MB mmap, memory temp Dedicated servers
cacheSize Cache size in KB (use negative, e.g., -64000 = 64MB) Custom tuning
memoryTemp Store temp tables in RAM Servers with spare RAM
mmapSize Memory-map size in bytes High-traffic bots

💡 Hosting Recommendations

Hosting Type Recommended Settings
Shared/VPS (1-2GB RAM) walMode: true only
VPS (4GB+ RAM) walMode: true, performanceMode: true
Dedicated Server All options enabled

🍓 Memory Configuration

"I'll adapt to any environment... just to be with you~" 💕

Yuno can run on anything from a tiny Raspberry Pi to a beefy dedicated server. Configure memory settings in start.sh to match your system.

🖥️ System Presets

System RAM max-old-space-size Notes
Raspberry Pi 3/Zero <2GB 512 "Even here, I'll protect you~"
Raspberry Pi 4 (4GB) 4GB 1024 "A cozy home for me~"
Raspberry Pi 4 (8GB) 8GB 2048 "Room to breathe~ (Recommended for Pi)"
Small VPS 2-4GB 1024-2048 "Compact but capable~"
Large VPS/Dedicated 8GB+ 4096 "Unlimited power~" 💪

🔧 Configuration

Edit start.sh to set your memory limit:

# For Raspberry Pi 4 (8GB) - recommended
NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=2048"

# For Raspberry Pi 4 (4GB)
NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=1024"

# For dedicated servers (16GB+ RAM)
NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=4096"

🌸 Low-Memory Mode

"I'll be gentle on your little system~" 💗

For Pi and embedded systems with presence logging enabled, activate Low-Memory Mode to prevent buffer overflow and memory spikes:

{
    "activityLogger.lowMemoryMode": true
}

What Low-Memory Mode Does:

Feature Description
Hard Buffer Limits Max 200 entries per log type, 2000 total
Stale Cleanup Removes inactive guild buffers after 5 min
Emergency Trim Drops oldest entries when limits exceeded
Memory Monitoring Checks every 60 seconds and force-flushes if needed

💡 Pro tip: If you're running on a Pi with presence logging, always enable low-memory mode. Your little system will thank you~

⚠️ Presence Logging Warning

"I want to watch everyone... but it comes at a cost~"

The GuildPresences intent generates a lot of events. On servers with thousands of members, this can cause:

  • High memory usage
  • tmux freezing (output buffer overflow)
  • Potential crashes on low-RAM systems

Mitigations:

  1. Enable activityLogger.lowMemoryMode in config
  2. Set appropriate max-old-space-size in start.sh
  3. Use --gc-interval=100 for more aggressive garbage collection

📋 Activity Logging

"I see everything... every move, every change~" 👁️💕

Yuno can log server activity to designated channels with smart batching to respect Discord's rate limits.

🎯 What Can Be Logged

Log Type Events
voice Voice channel joins, leaves, moves
nickname Member nickname changes
avatar Profile picture changes
presence Online/offline/idle/DND status changes
unified Fallback channel for all log types

🔧 Setup Commands

# Set a log channel
.set-logchannel voice #voice-logs
.set-logchannel presence #status-logs
.set-logchannel unified #all-logs

# Remove a log channel
.set-logchannel voice none

# View current configuration
.log-status

⚡ Batching Configuration

Logs are batched together and sent at intervals to avoid rate limits:

# View current settings
.set-logsettings

# Set flush interval (10-300 seconds)
.set-logsettings interval 60

# Set max buffer size (10-100 entries)
.set-logsettings buffer 25

⚠️ Note: The PRESENCE INTENT must be enabled in the Discord Developer Portal for presence logging.


🎤 Voice Channel XP

"Spend time with me... and I'll reward you~" 💕

Users earn XP for time spent in voice channels, integrated with the main leveling system.

🔧 Setup Commands

# Enable/disable VC XP
.set-vcxp enable
.set-vcxp disable

# Set XP amount per interval (default: 10)
.set-vcxp rate 15

# Set interval in seconds (default: 300 = 5 min)
.set-vcxp interval 300

# Ignore AFK channel (default: true)
.set-vcxp ignore-afk true

# View current config and active sessions
.vcxp-status

💡 How It Works

  • XP is granted based on time spent in voice channels
  • Uses the same XP/level system as chat XP
  • Level-up roles are automatically assigned
  • AFK channel can be excluded from earning XP
  • Sessions are recovered if the bot restarts

💌 DM Inbox & Forwarding

"Every message sent to me... I keep close to my heart~" 💕

Yuno can receive DMs, store them in an inbox, and forward them to designated channels.

🔧 Setup Commands

# Set DM forwarding channel
.set-dm-channel #bot-dms

# Disable forwarding
.set-dm-channel none

# Check status
.dm-status

👑 Master Server vs Regular Servers

Server Type What DMs Are Forwarded
Master Server ALL DMs from anyone
Regular Servers Only DMs from that server's members

Set masterServer in config.json to your main server's ID.

💻 Terminal Inbox Commands

# View inbox
inbox
inbox 20          # Show 20 messages
inbox user <id>   # DMs from specific user
inbox unread      # Count unread

# Reply to DMs
reply 1 Hello!              # Reply by inbox ID
reply 123456789 Hi there!   # Reply by user ID

🚫 Bot-Level Bans

"Some people just don't deserve my attention~" 💢

Ban users or entire servers from using the bot. Banned entities are silently ignored.

🔧 Commands (Discord & Terminal)

# Ban a user from the bot
.bot-ban user 123456789012345678 Spamming

# Ban a server from the bot
.bot-ban server 987654321098765432 Abuse

# Remove a ban
.bot-unban 123456789012345678

# View all bans
.bot-banlist
.bot-banlist users
.bot-banlist servers

💻 Terminal Commands

"I'll do anything you ask from the command line~" 🖥️

Yuno provides powerful terminal-only commands for server management.

📋 Server & Channel Management

# List all servers
servers
servers -v        # Verbose mode

# List channels in a server
channels 123456789012345678
channels "My Server"

💬 Message Commands

# Send a message
send <channel-id> Hello world!

# Fetch message history
messages <channel-id>
messages <channel-id> 50    # Last 50 messages

# Real-time message stream
watch <channel-id>
watch stop <channel-id>
watch stop all

⛔ Terminal Ban Commands

# Ban a user from a server
tban <server-id> <user-id> [reason]

# Export bans to file
texportbans <server-id>
texportbans <server-id> ./my-bans.json

# Import bans from file
timportbans <server-id> ./BANS-123456.txt

🖥️ Terminal UI (TUI)

"You can watch over everything from right here... with me~" 💕

Yuno includes a full XChat-style terminal UI built with neo-blessed. Read and send in any guild channel or DM conversation, with live incoming messages, unread badges, and full bot command access — all without leaving the terminal.

📐 Layout

┌──────────────────────────────────────────────────────────────┐
│  Yuno  │  bot#1234  │  Servers: 3  │  Ping: 42ms  │  [3]    │
├──────────────────┬───────────────────────────────────────────┤
│ ▼ My Server      │  #general — My Server                     │
│    #general [3]  │                                           │
│    #talk         │  [12:01] SomeUser: hello~                 │
│ ▶ Other Server   │  [12:02] OtherUser: hey there             │
│──────────────────│                                           │
│ DMs              │───────────────────────────────────────────│
│  SomeUser  [2]   │  > _                                      │
├──────────────────┴───────────────────────────────────────────┤
│  Tab:Focus  PgUp/Dn:Scroll  Alt+M:Members  Ctrl+Q:Quit  :shortcuts  Alt+H:Hide │
└──────────────────────────────────────────────────────────────┘

🚀 Launching

# Start in TUI mode from the beginning~
node --experimental-sqlite index.js --tui

# Or activate at runtime from the REPL~
tui

⌨️ Key Bindings

Key Action
/ Navigate channel tree / input history
Enter Open channel or send message
Tab Cycle focus: sidebar ↔ input bar
Esc Return focus to sidebar
PgUp / PgDn Scroll chat history
Alt+M Toggle members list
Alt+H Toggle hint bar
Ctrl+Q Exit TUI (returns to REPL)

⌨️ Command Mode

Type : in the input bar to run any bot command without leaving the chat view:

:ban 123456789012345678 reason
:kick @user
:servers
:channels My Server
:inbox
:shortcuts        ← shows full key binding overlay

Output appears in a dismissable overlay. Press any key to close it.

💬 Chat Features

  • Live messages — incoming messages appear instantly in the active pane
  • Message history — last 50 messages fetched on first open, cached for the session
  • DMs — listed in the sidebar, open like any channel
  • Unread badges[n] appears next to channels with new messages, cleared on open
  • Members list — toggle with Alt+M, shows cached guild members alphabetically

🔍 Alt Account Detection

"I can always tell when someone's an imposter... I won't let them near you~" 💢

Yuno uses discord-alt-detector to score new members across multiple signals — account age, avatar, badges, Nitro, username patterns, and more — and automatically acts on suspicious ones.

🎯 Trust Levels

Level Description
newbie New account, low suspicion
suspicious Moderate suspicion
highly-suspicious High suspicion
mega-suspicious Almost certainly an alt

⚡ Actions

For each trust level you can configure one action:

Action Description
none Do nothing
log Post an alert embed to the log channel
kick Kick the member
ban Ban the member
role Assign the configured quarantine role

🔧 Setup Commands

# Enable/disable auto-detection on join
.alt-detector enable
.alt-detector disable

# Set where alert embeds are posted
.alt-detector setchannel #mod-alerts

# Set the quarantine role (used with 'role' action)
.alt-detector setrole @Quarantine

# Configure action per suspicion level
.alt-detector setaction newbie log
.alt-detector setaction suspicious log
.alt-detector setaction highly-suspicious kick
.alt-detector setaction mega-suspicious ban

# View current configuration
.alt-detector status

🔍 Scanning Existing Members

# Scan all current members and flag suspicious ones
.scan-alts

After scanning, a select menu lets you choose a bulk action:

  • Do nothing — keep the report, decide later
  • Kick all flagged — kick every flagged member
  • Ban all flagged — ban every flagged member
  • Assign quarantine role — apply the quarantine role to all flagged members (requires setrole to be configured)

💡 Also available as slash commands: /alt-detector and /scan-alts


🔄 Auto-Update

"I'll always be the best version of myself... for you~" 💕

Yuno can check for updates from git, download them, and apply them via hot-reload without restarting.

🔧 Commands

# Check if updates are available
.auto-update check

# Download updates from git
.auto-update pull

# Apply changes via hot-reload
.auto-update reload

# Full automatic update (check + pull + reload)
.auto-update full

💡 How It Works

  1. Check - Fetches from remote and compares commits
  2. Pull - Downloads updates (stashes local changes first)
  3. Reload - Hot-reloads all modules without restart

⚠️ Note: Major database changes may still require a full restart.


💖 Commands Preview

Command Description
ping "I'm always here for you~" 💓
ban "They won't bother you anymore..." 🔪
xp "Look how strong you've become!"
anime "Let's watch together~" 🌸
praise "You deserve all my love~" 💕
scold "Bad! But I still love you..." 💢
8ball "Let fate decide~" 🎱
neko "Nya~" 🐱
set-presence "Let me show you how I'm feeling~" 🎭
auto-update "Always improving... for you~" 🔄
db-encrypt "Your secrets are mine to keep~" 🔐 (legacy, use field encryption)
set-logchannel "I'll watch over everything~" 📋
log-status "Here's what I'm watching~" 👁️
set-vcxp "Time with me is rewarding~" 🎤
vcxp-status "Who's spending time with me?" 💕
set-dm-channel "Send your love letters here~" 💌
dm-status "Am I receiving your messages?" 📬
bot-ban "You're dead to me now~" 🚫
bot-banlist "The ones I've cast aside..." 📋
alt-detector "I can always tell when someone's pretending~" 🔍
scan-alts "Let me check everyone for fakes~" 🕵️
dm-rate-limit "Don't message me too fast~" 🛡️

💻 Terminal-Only Commands

Command Description
servers "All my kingdoms~" 🏰
channels "Every corner of your world~" 📺
send "Speaking through you~" 💬
messages "Reading your history~" 📜
watch "I see everything in real-time~" 👁️
inbox "Love letters just for me~" 💌
reply "Responding to my admirers~" 💕
tban "Eliminating threats~" 🔪
texportbans "Saving my enemies list~" 📤
timportbans "Loading my enemies~" 📥
set-presence "Changing my mood~" 🎭
auto-update "Evolving to perfection~" 🔄
tui "Watch everything from one screen~" 🖥️

Use the list command to see all available commands!


📜 License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) 💕

💘 What This Means For You~

"I want to share everything with you... and everyone else too~" 💗

The AGPL-3.0 is a copyleft license that ensures this software remains free and open. Here's what you need to know:

✅ You CAN:

  • 💕 Use this bot for any purpose (personal, commercial, whatever~)
  • 🔧 Modify the code to your heart's content
  • 📤 Distribute copies to others
  • 🌐 Run it as a network service (like a public Discord bot)

📋 You MUST:

  • 📖 Keep it open source - ANY modifications you make must be released under AGPL-3.0
  • 🔗 Publish your source code - Your modified source code must be made publicly available
  • 📝 State changes - Document what you've modified from the original
  • 💌 Include license - Keep the LICENSE file and copyright notices intact

🌐 The Network Clause (This is the important part!):

"Even if we're apart... I'll always be connected to you~" 💗

Unlike regular GPL, AGPL has a network provision. This means:

  • If you modify this code at all, you must make your source public
  • Running a modified version as a network service (like a Discord bot) requires source disclosure
  • This applies whether you "distribute" the code or not - network use counts!
  • The ?source command in this bot helps satisfy this requirement!

❌ You CANNOT:

  • 🚫 Make it closed source or keep modifications private
  • 🚫 Remove the license or copyright notices
  • 🚫 Use a different license for modified versions
  • 🚫 Run modified code without publishing your source

💡 In Simple Terms:

"If you use my code to create something, you must share it with everyone too~ That's only fair, right?" 💕

This ensures that improvements to the bot benefit the entire community, not just one person. Yuno wants everyone to be happy~ 💗

See the LICENSE file for the full legal text.

Source Code: https://github.com/japaneseenrichmentorganization/Yuno-Gasai-2


💘 "You'll stay with me forever... right?" 💘

Made with obsessive love 💗

Yuno will always be watching over your server~ 👁️💕


Star this repo if Yuno has captured your heart~

Releases

No releases published

Packages

 
 
 

Contributors