Skip to content

NekoSuneProjects/VRChat-Group-Logger

Repository files navigation

DiscordBotStandalone (VRCLogger BanLogger)

Standalone Discord bot for VRChat group moderation logging, blacklist tooling, and staff/admin workflows. This build runs as a single bot instance and connects to a VRChat backend service plus a MySQL datastore.

Features

  • VRChat group moderation actions (ban, unban, kick, request handling)
  • User, avatar, and group blacklist management
  • Staff/admin role management with access controls
  • API key management for VRChat staff workflows
  • VRChat user lookup and group membership checks
  • Helpdesk ticket submission integration (optional, FlareSolverr supported)
  • Multi-language i18n support

Requirements

  • Node.js 20.x
  • Discord bot application + token
  • MySQL database (auto-migrated via Sequelize)
  • VRChat backend API service reachable by the bot
  • Optional: FlareSolverr (for helpdesk ticket submission)

Quick Start

  1. Install dependencies
npm install
  1. Create config file
copy config\settings-template.json config\settings.json
  1. Fill in config/settings.json (see "Configuration" below).

  2. Run the bot

npm start

On Windows you can also use:

run-dev.bat

Configuration

The bot reads config/settings.json. A template exists at config/settings-template.json.

Minimum values to start:

  • clienttoken or env var clienttoken
  • clientid
  • TestingServerID (for slash command registration during development)
  • SQL connection fields
  • VRCAPI group info and backend URLs

Key settings (summary):

  • clienttoken: Discord bot token (prefer env var clienttoken)
  • clientid: Discord application ID
  • TestingServerID: dev guild ID for quick slash command updates
  • prefix: legacy prefix (slash commands are primary)
  • developerID: array of Discord user IDs
  • embedcfg: embed colors and footer
  • botsettings: metadata, flaresolverrUrl, display info
  • tags.names: blacklist tag choices
  • SQL: MySQL connection info
  • helpdesk: email + default moderation category
  • VRCAPI: group IDs, access roles, log channels, backend URLs

Environment variables:

  • clienttoken: Discord bot token
  • FLARESOLVERR_URL: overrides botsettings.flaresolverrUrl

Discord Privileged Intents

The bot uses privileged intents (GuildMembers, GuildPresences, MessageContent). Enable them in the Discord Developer Portal for the application.

Slash Commands

General:

  • /ping - Websocket ping
  • /help - Command list
  • /aboutbot - Bot info

Bot owners:

  • /uptime - Bot uptime
  • /restart - Restart bot
  • /reloadcmd - Reload commands

VRChat:

  • /vrccheck - Lookup VRChat account
  • /vrcban - Ban group member
  • /vrcunban - Unban group member
  • /vrcuserbl - Manage user blacklist
  • /vrcavibl - Manage avatar blacklist
  • /vrcgroupsbl - Manage group blacklist
  • /vrcaddstaff - Add staff with role
  • /vrcremovestaff - Disable staff
  • /vcrupdatestaff - Update staff role
  • /vrcaddadmin - Add admin
  • /vrcremoveadmin - Disable admin
  • /vrcmanageapikey - Create/remove/regenerate API keys

Data Stores

  • MySQL: primary storage for blacklists, staff lists, and API keys.
  • SQLite: local per-group cache in vrcgroup/ (auto-created).

Troubleshooting

  • Invalid token: set clienttoken in config/settings.json or env var clienttoken.
  • Slash commands not appearing: set TestingServerID or wait for global registration to propagate.
  • Backend errors: verify VRCAPI.VRCBackEndURL and connectivity.

Project Structure

  • index.js: entry point and client setup
  • handler/: event and slash command loader
  • events/: Discord event handlers
  • SlashCommands/: slash command definitions
  • config/: settings template, emojis, help config
  • lib/: datastores (Sequelize + SQLite)
  • utils/: VRChat API helpers and helpdesk integrations
  • locales/: i18n strings

License

MIT License. See LICENSE.

About

VRChat Group Logger (WIP)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors