Effective and last updated: October 20, 2026.
This policy describes RinkRelay, the Vexium Labs Discord bot and its dashboard at vexiumlabs.net/nhl/. It does not cover unrelated Vexium Labs projects. The service is operated under the Vexium Labs brand. Contact details appear below.
1. What the service does
RinkRelay provides NHL scores, statistics, standings, leaderboards, goal highlights, and automated game-channel updates. Server managers can sign in with Discord, invite the bot, and select a favorite team and a channel. We use information to authenticate users, check server-management permissions, save settings, deliver messages, prevent duplicate updates, and protect the service against misuse.
2. Discord sign-in and server access
When you sign in, we request Discord’s identify and guilds permissions. We receive your Discord user ID and username or display name, an access token, and information about servers you belong to, including identifiers, names, icons, ownership and permissions. We use this information to show servers you can manage. For setup, we also retrieve the bot’s membership, server roles, channel details, and permission overrides to check where it can post.
We store your user ID and display name with a dashboard session. The Discord access token is encrypted before storage; the server stores a hash of the dashboard session token. The complete server list is fetched for authorization and is not saved as a membership directory in the application database. We do not request the Discord email scope or your Discord password.
3. Server settings and game-message records
We store the configured Discord server ID, scoreboard and command channel IDs, optional game-day alert channel, alert toggle and timezone, favorite team, whether updates are enabled, and identifiers of messages created by the bot. We also store scheduling and game state, the most recent scoreboard content, update timestamps, error information and retry counts.
A message-delivery ledger records the server, channel, game and event identifiers; bot message IDs; the bot-generated message payload; delivery or deletion status; a creation time, and a completion time for finalized games. We also record when server membership was last checked and when bot removal was first confirmed. This lets the bot update the same message, recover interrupted deliveries, and remove its own game announcements. Payloads can include NHL player names, public game statistics, and highlight URLs. We do not download or store highlight video files in our database.
4. Commands, searches, and channel messages
Discord sends us interaction data when you use commands or buttons, including your Discord identifier, relevant server/channel context, command choices, and a temporary interaction token used to reply. Player search text is sent to NHL’s search service and cached with the results; these search cache entries are not linked to a user ID by the application. Avoid entering private or sensitive information into player searches.
The bot is not designed to monitor conversations or archive users’ chat messages. To recover an uncertain message delivery, it may retrieve recent messages in a configured channel and inspect message identifiers, author identifiers, timestamps, and markers to find its own prior message. Discord may include other message data in those responses. The application does not save those fetched conversations in its database. It does not request privileged message-content access or read direct messages as a service feature.
5. Browser storage and technical information
The dashboard uses browser sessionStorage for its session token, a selected server identifier, and temporary Discord sign-in verification values. This is functional storage used for login and setup. Sign-out removes the current server-side session and the browser session token; other tab-local preferences may remain until the browser clears the tab’s session storage.
For rate limiting, the backend temporarily records Discord user/server identifiers, counters, expiry times, and the forwarded IP-address value supplied with login requests. The dashboard code does not include advertising trackers or analytics scripts. Hosting and infrastructure providers may separately process IP addresses, request details, security logs, cookies or other technical information under their own practices. These providers manage their own technical logs under their applicable privacy policies and service settings.
6. Who receives information
Discord provides authentication, server information, command interactions, and message delivery. Supabase hosts the bot backend and its database. OpenAI Sites hosts the dashboard; its hosting infrastructure includes Cloudflare. These providers process information needed to provide their services. NHL endpoints receive game/statistics requests and player-search queries. The application does not add your Discord user ID to NHL requests.
Goal videos remain on NHL’s video hosting infrastructure, including Brightcove and its delivery providers. Discord handles inline playback and proxying. Clicking an NHL fallback link opens NHL’s website, where its own privacy practices apply. These services may receive network information when content is requested or played.
We do not use the bot’s application data for advertising, sell it, or create marketing profiles. Information may also be disclosed where legally required or necessary to address abuse, security incidents, or legal claims, subject to applicable law. Server-channel messages are visible according to that server’s Discord permissions; ordinary command results and selected standings/leaderboards may be public within the channel. A private selection screen does not make the resulting shared message private.
7. How long information remains
Dashboard sessions expire after no more than eight hours, or earlier if the Discord token expires. Signing out deletes the current session record. Sign-in verification records expire after ten minutes and are consumed when used. Rate-limit windows are generally one to five minutes. Cache lifetimes vary by feature; player searches are cached for one hour. Expired sessions, sign-in records, caches, and rate-limit records are scheduled for daily deletion, so expiration is not necessarily the time of physical deletion. Cleanup can be delayed by outages.
Completed game-message records and the saved previous-game snapshot are eligible for deletion 30 days after the bot finalizes the game. The daily cleanup removes eligible records, including saved message payloads and highlight URLs. Unfinished games and records needed for active recovery are not treated as completed. Existing finalized records at rollout receive a conservative 30-day period from rollout.
Server settings are retained while the bot remains installed. A daily check uses Discord’s complete bot-server membership list to detect removal. Settings and associated game-message records are eligible for deletion 30 days after removal is first confirmed. A fresh successful membership check is required before deletion; failed or incomplete Discord responses do not count as removal. Re-inviting the bot before cleanup cancels the countdown when membership is next confirmed. Pausing updates does not start a deletion countdown.
Cleanup occurs on the next successful daily run after the relevant 30-day period; outages, active processing and unresolved recovery may delay deletion. This cleanup deletes database records, not messages in Discord. Final game summaries remain in Discord until removed by someone with permission. Signing out deletes the current session, not the server configuration. Game-day alert delivery records, including their message IDs and payloads, are scheduled for deletion 30 days after creation; the Discord announcements remain until removed by someone with permission. Provider logs and backups follow separate provider retention schedules; the application’s 30-day cleanup does not control those schedules.
8. Your choices and requests
You can decline dashboard sign-in, sign out, pause automated scoreboard updates, remove the bot from your server, or revoke its authorization in Discord. These actions have different effects. Confirmed bot removal starts the 30-day server-data countdown described above; it does not immediately erase stored information or posted messages.
For access, correction or deletion requests, contact Vexium Labs at 454Apache@vexiumlabs.net. You can also contact GrieferOne on Discord at GrieferOne on Discord. Email is the primary channel. Include the relevant Discord user ID or server ID and describe your request. Do not send passwords or access tokens. We may ask for reasonable proof that you control the account or manage the server before changing or deleting shared server records. We handle requests through the contact channels above, subject to verification and any legal retention requirements. Applicable privacy rights and complaint options depend on your location; nothing here limits rights granted by law.
9. Security, international processing, and eligibility
The application uses HTTPS, encrypted stored Discord access tokens, hashed dashboard session tokens, restricted database access, Discord request-signature verification, and server-management checks. These measures reduce risk but do not guarantee complete security.
Providers may process information outside your country, where privacy laws may differ. Their privacy policies describe their international processing practices. Contact us if you have questions about where your information is processed.
The bot is intended for people eligible to use Discord under Discord’s age requirements and local law. We do not run a separate age-verification system. If you believe information was supplied by someone who is not eligible, contact the operator so it can be investigated and addressed.
10. Changes and contact
We will update the date on this page when this policy changes. We will communicate material changes to data practices before they take effect and obtain additional consent where required.
Vexium Labs
Email (primary privacy, deletion and support contact): 454Apache@vexiumlabs.net
Discord (alternative contact): GrieferOne — GrieferOne on Discord