> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremewx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Snowball Privacy Policy — Data Collection and Rights

> How Snowball collects, uses, stores, and shares your data across weather, AI, moderation, support, economy, music, and community features.

This Privacy Policy explains how Snowball, a Discord bot operated by Xtreme Weather / BP Technologies, handles your information. For privacy questions, data access requests, export requests, or deletion requests, contact us at **[support@xtremewx.com](mailto:support@xtremewx.com)**.

<Info>
  **Effective date:** March 31, 2026  ·  **Version:** 1.0
</Info>

## 1. Overview

This Privacy Policy explains what information Snowball may collect, access, store, or share when you use the bot in Discord.

Snowball includes weather tools, AI conversation features, moderation tools, support tickets, community features, music and radio playback, leveling and economy features, and optional integrations with external services. Because different servers may use different features, not every category below applies to every user at all times.

This policy describes Snowball's current implemented behavior based on the codebase as it exists today. Where the current code does not define a fixed automatic deletion schedule, this policy says so plainly rather than promising a purge timeline that is not yet implemented.

Snowball is not intended to operate as a hidden surveillance tool. In general, Snowball processes Discord content when a user invokes a feature, when a server enables a feature that depends on Discord events, or when operators need records to run moderation, support, safety, or debugging workflows.

## 2. Information Snowball collects or processes

<AccordionGroup>
  <Accordion title="A. Discord account and server information">
    Snowball may collect or process:

    * Discord user IDs, guild IDs, channel IDs, thread IDs, message IDs, role IDs, and event IDs
    * Usernames, display names, global names, tags, avatars, banners, and role membership when needed for a feature
    * Server membership, join and leave events, and voice-channel presence when needed for leveling, announcements, moderation, or playback features

    Snowball uses this information to identify users, run commands, manage moderation and support workflows, track progression or economy state, post server features such as birthdays or starboard, and keep feature data associated with the correct user or server.

    Unless this information is written into a stored feature record described below, much of it is accessed live from Discord and not separately retained by Snowball.
  </Accordion>

  <Accordion title="B. Messages, replies, mentions, and AI conversation data">
    Snowball may collect or process:

    * Message content used for prefix commands
    * Message content when users mention or reply to Snowball for AI conversations
    * Reply-chain context when a user replies to another message while invoking Snowball
    * Limited recent channel context used to answer certain AI prompts
    * Image attachments and image URLs included in AI requests
    * AI conversation history, short thread summaries, personality settings, and reply-tracking preferences
    * AI usage counters and limit-related records

    Snowball uses this information to:

    * Interpret commands and AI requests
    * Maintain short multi-turn conversation context
    * Generate AI responses and conversation summaries
    * Enforce daily or rolling AI usage limits
    * Let users choose whether Snowball responds to them and which AI personality is used

    <Warning>
      Snowball's AI features are not limited to only the text you directly type to the bot. Depending on how you invoke the AI, Snowball may also process limited reply context, recent nearby channel messages, and images needed to answer the request.
    </Warning>

    In the current implementation, this additional AI context is gathered in connection with direct user interaction with Snowball, such as mentions or replies. Snowball is not designed to continuously summarize or archive unrelated channel conversations for general profiling purposes.
  </Accordion>

  <Accordion title="C. Direct-message interaction data">
    Snowball may process limited DM interaction data when you interact with the bot in direct messages, including:

    * Ban appeal submissions
    * Ticket close confirmations
    * Ticket ratings
    * Transcript requests
    * Other button, select-menu, or modal responses sent through Snowball's DM workflows

    Snowball is not currently implemented as a general-purpose DM chat bot. Ordinary user DM message content is not a primary Snowball feature in the current codebase.
  </Accordion>

  <Accordion title="D. Moderation and safety records">
    Snowball may collect or store:

    * Moderation case IDs
    * Target user IDs and moderator IDs
    * Moderation type, reason, timestamp, and mute expiry time
    * Appeal text submitted through a ban appeal
    * Moderation history displayed through moderation or user info features
    * Log message URLs and related moderation metadata when used by the moderation system

    Snowball uses this information to administer moderation actions, keep case history, review prior enforcement, process appeals, and provide moderation visibility to authorized staff.
  </Accordion>

  <Accordion title="E. Support tickets, transcripts, ratings, and review workflows">
    Snowball may collect or store:

    * Ticket IDs, thread IDs, channel IDs, opener user IDs, assigned staff IDs, and status fields
    * Ticket opening reason, escalation reason, close reason, close timestamps, and ratings
    * Transcript content generated from ticket thread messages
    * Spotter application status and reviewer IDs
    * Level reward submission status, reviewer IDs, and uploaded file URLs

    Snowball uses this information to create support tickets, assign and escalate support work, close tickets, generate transcripts on request, collect ticket ratings, review community applications, and process custom reward submissions.

    **Note on transcripts:** Snowball generates ticket transcripts from Discord thread messages when needed. Transcript content may include user-written text from the ticket thread. Snowball does not maintain a separate permanent transcript database table in the current codebase, but transcript files can be generated and sent to users or staff through Discord.
  </Accordion>

  <Accordion title="F. Community submissions and public reposting features">
    Snowball may collect or process:

    * Suggestions and bug reports
    * Question of the Day submissions, submitter identity, approval status, and queue order
    * Birthdays (month and day)
    * Starboard data including original message ID, original channel ID, original author ID, starboard message ID, and reaction counts
    * Reposted starboard message text, links, and public image attachments

    Snowball uses this information to run community features, publish approved content, celebrate birthdays, and repost starred messages into a starboard channel.

    Some of this content becomes public within Discord when the related feature is used. For example, starboard reposts and birthday announcements are designed to be visible in server channels.
  </Accordion>

  <Accordion title="G. Economy, progression, and activity data">
    Snowball may collect or store:

    * Economy balances, bank balances, cooldown timestamps, reminders, item ownership, roles, missions, and event participation
    * Arena challenge records, ELO, pet or boar progression, and item usage
    * Stock or portfolio holdings
    * Server XP, levels, weekly XP, cooldown timers, and level reward status
    * User IDs associated with message activity or voice presence used to award progression or economy benefits
    * Aggregated message counts, daily active-user counts, join counts, leave counts, and trade volume used for economy calculations

    Snowball uses this information to power leveling, leaderboards, economy features, rewards, reminders, and gameplay systems.

    Snowball does not currently store a complete message-content archive for economy or leveling. For those systems, the bot generally uses your activity and user ID to update balances, cooldowns, or XP rather than storing each message's text for that purpose.
  </Accordion>

  <Accordion title="H. Music, radio, media, and uploaded files">
    Snowball may collect or process:

    * Voice-channel participation needed to join, play, pause, or stop audio
    * User-supplied music search text
    * Direct media URLs supplied by users
    * Uploaded audio files
    * Queue metadata such as track title, artist, thumbnail, and requester ID
    * Temporary downloaded media files created during playback

    Snowball uses this information to validate audio sources, queue media, download or stream tracks, and manage voice playback.

    Temporary media files are created locally during some playback flows and are generally deleted after playback ends, when playback is stopped, or when cleanup routines run.
  </Accordion>

  <Accordion title="I. Donations and payment-related information">
    When donation integrations are enabled, Snowball may process:

    * Stripe webhook event IDs
    * Donation amount
    * Donor email received from Stripe
    * Payment or transaction identifiers
    * Receipt URLs
    * Optional Discord username entered in Stripe custom fields
    * Limited Discord member search results used to try to match a donor to a server member

    Snowball uses this information to prevent duplicate webhook processing, post donation acknowledgements, and optionally connect a donation to a Discord user if the donor provided Discord details.

    The current code logs donor email to server logs and does not post donor email publicly to Discord.

    Snowball does not receive or store full payment card numbers, full bank account details, or other full payment method credentials. Those are handled by Stripe.
  </Accordion>

  <Accordion title="J. Operational and error logging">
    Snowball may process technical and diagnostic data such as:

    * Error messages
    * Stack traces
    * Command or interaction context
    * Identifiers included in error output
    * Service or request failures

    The current code can forward certain error logs to a Discord error-log channel used by operators. Those logs may include technical details and, depending on the error, may include identifiers or content contained in the failing request.

    These logs are intended for troubleshooting, abuse prevention, and service reliability, not for advertising or user profiling.
  </Accordion>
</AccordionGroup>

## 3. How Snowball uses information

Snowball uses information to:

* Provide weather, AI, moderation, support, music, economy, and utility features
* Identify the right user, server, channel, or ticket for a request
* Respond to mentions, replies, commands, buttons, modals, and menus
* Maintain short-term conversational context for AI features
* Store moderation and support records
* Operate public server features such as starboard, birthdays, QOTD, and donation announcements
* Enforce cooldowns, limits, anti-duplication controls, and abuse-prevention rules
* Troubleshoot errors and keep the bot functioning

Snowball is not built to sell Discord API data or share Discord user data with advertising networks or data brokers.

## 4. Retention and deletion

Below is Snowball's current retention posture.

Where a category below does not have a built-in automatic timer in the current codebase, that means Snowball does not yet enforce a fixed deletion deadline for that record type. In those cases, data may remain until it is manually deleted, deleted following a valid request, removed during maintenance, or no longer needed for the feature, safety, or legal purpose involved.

<AccordionGroup>
  <Accordion title="A. AI and conversation data">
    | Record type                                | Retention                                                                                                                               |
    | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
    | Conversation history                       | Latest 6 stored entries per user-plus-guild scope. Older entries are automatically removed on a rolling basis as new entries are saved. |
    | Conversation thread entries                | Up to 50 short message entries. A thread is marked expired after 15 minutes of inactivity.                                              |
    | Conversation summaries                     | Expired thread summaries may remain in the database after the thread expires. No general automatic purge is currently defined in code.  |
    | AI usage logs                              | Automatically purged after 48 hours.                                                                                                    |
    | AI limit-card markers                      | Date-scoped to the day they were created. No separate general cleanup job for historical marker rows is currently defined.              |
    | Reply tracking and personality preferences | Retained until changed, deleted, or removed following a valid request. No automatic purge is currently defined.                         |
    | In-memory reply cache                      | Expires after 30 minutes.                                                                                                               |
  </Accordion>

  <Accordion title="B. Tickets, moderation, and review workflows">
    | Record type                                       | Retention                                                                                                                                                                                             |
    | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Moderation cases                                  | No general automatic purge is currently defined in code. Records are retained until deleted, replaced, or no longer needed for moderation, safety, legal, or operational reasons.                     |
    | Ticket metadata                                   | No general automatic purge is currently defined in code.                                                                                                                                              |
    | Ticket transcripts                                | Generated from Discord thread history when requested. No dedicated permanent transcript table is maintained, but Discord itself may retain the underlying thread messages until deleted from Discord. |
    | Ticket ratings, escalation data, close reasons    | No general automatic purge is currently defined in code.                                                                                                                                              |
    | Spotter applications and level reward submissions | No general automatic purge is currently defined in code.                                                                                                                                              |
    | Failed or removed ticket records                  | Some ticket rows are deleted automatically if ticket creation fails or if a tracked ticket thread is deleted.                                                                                         |
  </Accordion>

  <Accordion title="C. Community features">
    | Record type                           | Retention                                                                                                                                                                                          |
    | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Birthdays                             | Retained until the user removes the entry, the record is deleted on request, or it is otherwise no longer needed. A `/birthday remove` command is currently available.                             |
    | QOTD submissions and approval records | No general automatic purge is currently defined in code.                                                                                                                                           |
    | Suggestions and bug reports           | Currently forwarded to Discord channels rather than stored in a Snowball database table. Retention depends on Discord channel history unless those messages are deleted.                           |
    | Starboard tracking data               | Retained while the entry remains tracked. Starboard records may be deleted when the source entry is removed from tracking, but no full global purge schedule is defined for all starboard records. |
  </Accordion>

  <Accordion title="D. Economy, progression, and activity data">
    | Record type                                                                                         | Retention                                                                          |
    | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
    | Economy records, item records, arena records, role purchases, mission history, and progression data | No general automatic purge is currently defined in code.                           |
    | Server levels and XP history fields                                                                 | No general automatic purge is currently defined in code.                           |
    | Aggregate message, join, leave, and activity data used for economy pricing                          | Stored as part of historical pricing records with no code-defined automatic purge. |
  </Accordion>

  <Accordion title="E. Donations and operational logs">
    | Record type                                | Retention                                                                                                           |
    | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
    | Stripe processed event IDs                 | No general automatic purge is currently defined in code.                                                            |
    | Donation-related server logs               | No log-retention period is defined in current code. Retention depends on the hosting or logging environment in use. |
    | Error logs forwarded to Discord or console | No global log-retention period is defined in current code.                                                          |
  </Accordion>

  <Accordion title="F. Pollers, caches, and temporary files">
    | Record type                                                 | Retention                                                                  |
    | ----------------------------------------------------------- | -------------------------------------------------------------------------- |
    | Temporary in-memory feature caches (alert and story caches) | Expire after approximately 15 minutes.                                     |
    | Poller seen-state JSON files                                | Retain identifiers for roughly 24 to 48 hours depending on the poller TTL. |
    | Temporary music or media files                              | Generally deleted after playback or when cleanup runs.                     |
  </Accordion>
</AccordionGroup>

### Deletion requests

You may request deletion of stored Snowball data by contacting **[support@xtremewx.com](mailto:support@xtremewx.com)** or using the available support workflow.

We may deny or limit deletion where we need to keep information for:

* Moderation and safety records
* Fraud prevention or abuse prevention
* Security investigations
* Payment, tax, accounting, or dispute-handling obligations
* Legal compliance
* Other users' rights or safety

If you submit a deletion request, we may first need to verify that you are the correct Discord user or otherwise authorized to make the request.

## 5. Sharing and external services

Snowball shares data only as needed to operate the bot, process payments, provide external data sources, support music or media features, or comply with law.

<AccordionGroup>
  <Accordion title="A. Discord">
    Snowball runs on Discord and necessarily processes data made available through the Discord API, including server, user, channel, message, reaction, and interaction data needed for the bot's features.
  </Accordion>

  <Accordion title="B. AI provider">
    * **Anthropic:** Snowball sends AI prompts, limited context, images, and some conversation-summary content to Anthropic in order to generate AI replies and summaries.

    If you use Snowball's AI features, your request may be processed by Anthropic. Snowball itself does not use your Discord content to train its own model, but third-party provider handling is governed by that provider's own terms and privacy materials in addition to this policy.
  </Accordion>

  <Accordion title="C. Payments">
    * **Stripe:** Processes donations and payment-related data and sends webhook events back to Snowball.

    Snowball receives limited payment-related event data from Stripe to acknowledge donations and prevent duplicate processing.
  </Accordion>

  <Accordion title="D. Weather, geocoding, monitoring, and alert data services">
    Snowball may send limited request data such as locations, coordinates, URLs, or service queries to:

    * OpenWeatherMap
    * OpenStreetMap Nominatim
    * `api.weather.gov`
    * Iowa State Mesonet
    * Storm Prediction Center (SPC)
    * Weather Prediction Center (WPC)
    * National Hurricane Center (NHC)
    * Instatus
    * Spotter Network
    * ACRCloud

    This is used to geocode locations, retrieve forecasts or alerts, monitor service status, identify radio streams, and support related weather features.

    These services generally receive only the request data needed to answer the weather, monitoring, or lookup request being made.
  </Accordion>

  <Accordion title="E. Media and music services">
    Snowball may send request data, media links, or lookup information to:

    * Spotify
    * Deezer
    * SoundCloud
    * Apple Music page endpoints
    * `yt-dlp` and source hosts connected to the media URL a user provides

    This is used to resolve tracks, retrieve metadata, validate direct links, and play or download media.
  </Accordion>

  <Accordion title="F. Operator-controlled or sibling infrastructure">
    Snowball also communicates with infrastructure used to support Snowball features, including:

    * A banner service
    * Secure weather and camera proxy services
    * `xtremewx.com` service endpoints and related operator-controlled infrastructure where used by Snowball features

    These services may receive request data needed to return weather products, camera content, images, or other feature outputs.
  </Accordion>
</AccordionGroup>

## 6. AI-specific disclosures

If you use Snowball's AI features, please read this section carefully.

* Snowball may store short AI conversation history and thread summaries tied to your user ID and, in servers, the relevant guild scope.
* Snowball may process reply context, recent nearby channel context, and images if those are needed to answer your prompt.
* Snowball may send AI request content to Anthropic to generate a response or a summary.
* Snowball supports personality modes. Some personality modes are intentionally more sarcastic, chaotic, or abrasive than others. That affects tone, but not the fact that your inputs may still be processed and stored as described here.
* Turning AI replies off through Snowball's AI settings stops Snowball from responding to you in those AI flows, but it does not automatically delete previously stored AI records.
* Snowball's AI responses can be wrong, incomplete, or inappropriate. Users should not rely on them as professional, legal, medical, or emergency advice.

<Warning>
  AI requests may involve more than the one line you typed if you invoke Snowball in a reply or mention context. That is how Snowball preserves conversational continuity, but it also means nearby contextual content may be processed to answer you.
</Warning>

## 7. Your choices and rights

Depending on your use of Snowball, you may have the following options:

* **Access:** Request a copy or summary of the Snowball data associated with your Discord account.
* **Export:** Request an export of stored Snowball data where reasonably possible.
* **Deletion:** Request deletion of stored Snowball data, subject to the limitations described above.
* **AI opt-out:** Use Snowball's AI controls to disable AI replies to you.
* **Birthday removal:** Use the current birthday removal command (`/birthday remove`) to delete your birthday entry.
* **Avoid optional features:** You may choose not to use optional features such as AI chat, music uploads, suggestions, QOTD submission, or donation-linked identification fields.
* **Server-level choices:** Server owners or administrators choose whether to invite and configure Snowball in a server, and some features are limited to specific servers, channels, or roles.

<Note>
  Snowball does not currently provide a universal self-service `/data export` or `/data delete` command. Requests are currently handled manually. Submit requests through **[support@xtremewx.com](mailto:support@xtremewx.com)** or the available support workflow.
</Note>

## 8. Security and incident handling

Snowball currently uses a mix of technical and operational controls visible in the codebase, including:

* Database-backed storage for persistent bot records
* Discord permission-gated commands for moderation and staff-only actions
* Ephemeral Discord replies in some sensitive interaction flows
* Outbound URL restrictions and private-host blocking for HTTP fetches
* Stripe webhook signature verification
* Role-based access patterns for some moderation, support, and review features

Snowball also relies on service separation in some areas. For example, payment processing is handled by Stripe rather than by Snowball directly storing full payment credentials.

The current codebase does not by itself document every production safeguard that may exist in the live environment. Accordingly, this policy does not claim encryption at rest, backup encryption, formal key-rotation practices, or a specific breach-notification timeline unless those controls are separately documented and published.

If we confirm a security incident affecting Snowball data, we may investigate, contain the issue, review available logs and impacted systems, and make notifications where required or appropriate. This policy should not be read as a promise of a specific incident-response SLA beyond what applicable law requires.

## 9. Children's privacy

Snowball is intended for use on Discord and is not directed to children under the minimum age permitted by Discord or applicable law. Snowball does not knowingly solicit or intentionally collect personal information from users who are below the minimum age allowed to use Discord or the applicable service.

<Note>
  If you believe a child has provided personal information to Snowball in violation of applicable rules, contact us at **[support@xtremewx.com](mailto:support@xtremewx.com)**.
</Note>

## 10. Changes to this policy

We may update this Privacy Policy from time to time to reflect feature changes, legal requirements, operational changes, or updated data practices. When we do, we will update the effective date and version at the top of this policy.

## 11. Contact

For privacy questions, access requests, export requests, deletion requests, or other data concerns, contact:

**Xtreme Weather / BP Technologies**\
Email: **[support@xtremewx.com](mailto:support@xtremewx.com)**
