| Discord ID | Services | Payment Type | Status | Expiry Date | Days Left | Actions | |
|---|---|---|---|---|---|---|---|
Connecting to database... | |||||||
| Username | Last Login | Created | Actions |
|---|---|---|---|
Loading... | |||
| Admin | IP Address | Result | Date / Time |
|---|---|---|---|
Loading... | |||
| Submitted | Discord | Name | Plex / Emby / Jellyfin | PayPal Email | Invited By | Status | Actions |
|---|---|---|---|---|---|---|---|
Loading... | |||||||
| Date / Time | Admin | Action | Target | Detail |
|---|---|---|---|---|
Loading... | ||||
Customise the app for your server. These values appear in the UI, DM footers, and payment references.
Users can check their own subscription status at /lookup. Set a password to enable the portal — leave blank to keep the current password unchanged.
Automatically DMs users on Discord at 7 days and 2 days before their subscription expires. Requires a Discord Bot token and the user's Discord User ID (snowflake) set on their profile.
Found in Discord Developer Portal → Your App → General Information → Public Key. Required for the /myid slash command.
Sends a daily Discord alert listing users whose subscriptions expire within the threshold. Alerts fire automatically once per day. Use "Send Now" to trigger immediately.
The system automatically saves a .db + .csv + .xlsx snapshot every 3 days to the backups/ folder on the host.
JJtopia User Backup Database.xlsx is also kept up-to-date automatically whenever users are added, edited, or payments are logged.
Use the buttons below for an on-demand download.
Import users from a StreamVault backup XLSX (Users sheet) or the original JJtopia XLSX (Main / Shine sheets). Replace All wipes existing users first.
Customise the message body sent to users. Leave blank to use the default text.
Expiry reminder placeholders: {name} {days} {expiry} {urgency}
Payment confirmation placeholders: {name} {expiry} {months}
Control whether the public /register form accepts new requests. The form can be auto-disabled if too many submissions arrive in a short window — a webhook alert will fire and registrations will be paused until you re-enable them.
Remove old audit log entries to keep the database tidy. Current entries: —
Remove old confirmed and dismissed payment notifications. Pending notifications are never pruned. Current resolved: —
/register
?invited_by=DiscordName to pre-fill the referral field./lookup
/pay
/update
/myid bot command isn't set up./report
{name}. Usually the subscriber's Discord username.123456789012345678). Required for automated DM reminders. Subscribers set this via the /myid bot command or the /update portal./myid
/senddm
/lookup
/pay
/pay portal with all configured payment methods./register
{name}Discord ID (the subscriber's display name){days}Days until expiry (expiry reminders only){expiry}Expiry date formatted as DD/MM/YYYY{months}Number of months paid (payment confirmation only)Hey {name} 👋 Your sub expires in {days} days ({expiry}). Renew at: https://your-site.com/pay
./backups/ and uploaded to Google Drive. The last 10 backups are kept.rclone.conf in ./config/rclone.conf. The remote name defaults to google (set RCLONE_REMOTE in docker-compose if different)./myid, /senddm, /lookup, /pay, /register commands and automated expiry reminders./lookup — users can check their own subscription status.