Dior's Builds
Data

Privacy Policy

Effective 28 July 2026Revision 1.0Ontario, Canada

The short version

We store your Discord user ID and your display preferences — timezone, visibility toggles, region, and colour settings. That's essentially it.

We cannot read your messages. The Bot doesn't have Discord's Message Content permission, so message text is technically inaccessible to us, not merely unused.

Your data is stored in Canada. No advertising, no analytics, no tracking, no cookies, no profiling, and nothing is sold or shared for marketing.

You can have everything deleted by emailing harkirat117@gmail.com — see §9.

This summary is for convenience. The sections below are the actual policy.


Who is responsible for your data

The data controller is:

Harkirat Mangat, also known as "dior", an individual based in Ontario, Canada. 📧 harkirat117@gmail.com

This is a hobby project run by one person. There is no company, no data protection officer (none is required — we do not carry out large-scale or systematic monitoring), and no privacy team. Email reaches a real person.

EU representative

We have not appointed an EU representative under GDPR Article 27. We rely on the exemption in Article 27(2)(a): our processing is occasional, does not include special-category or criminal-conviction data on any scale, involves only a user ID and display preferences, and is unlikely to result in a risk to the rights and freedoms of individuals.

If that assessment ever stops being accurate, we will appoint a representative and update this policy. EU and UK users can reach us directly at the address above, and we answer.


What we collect

Information stored about you

Everything below lives in a single UserPreference record keyed to your Discord user ID. A record is only created once you actually use the Bot.

DataWhat it isWhy we have it
Discord user IDYour permanent numeric Discord IDThe key linking your preferences to you. Required.
TimezoneAn IANA timezone you set (e.g. America/Toronto)So /timestamp and countdowns show correct local times
Timestamp styleYour preferred timestamp formatRemembers your /timestamp choice
Visibility settingsPublic or private replies, per feature groupRemembers whether you want replies others can see
Region preferenceYour CP pricing region, and whether it's pinnedShows the right prices without re-selecting
Calendar filterActive-events-only vs all eventsRemembers your /calendar toggle
Accent colour styleWhich colour source you've chosenControls how your messages are coloured
Cached colour valuesHex codes and 6-swatch palettes derived from your Discord profile imagesAvoids re-analysing your avatar on every command
Colour source hashesThe Discord asset hash a cached colour was computed fromDetects when you change your avatar so the cache refreshes

Is a Discord user ID personal data? Yes — we treat it as such. It's a persistent unique identifier that can be linked back to you, which brings it within GDPR Art. 4(1) and PIPEDA's definition of personal information. We say so rather than arguing otherwise.

About the colour data specifically

If you use the accent-colour or "View Colors" features, the Bot downloads your Discord avatar, banner, avatar decoration, or nameplate image and analyses it to extract dominant colours.

Temporary data held in memory

Exists only in the server's memory while it runs, and is lost on every restart or deploy (typically hours to days):

Operational logs and alerts

The Bot keeps an alert log of technical events — crashes, database problems, gateway disconnects, daily health checks — recording the alert level, a description, timestamps, process memory use, and uptime. Alerts are also posted to a private Discord channel that only the administrator can see, via a Discord webhook.

These concern the bot's health, not you. However, an error captured in a crash report could incidentally contain a Discord user ID if the failure happened while processing that person's command. This isn't deliberate, and these logs are never used to analyse users.

Alert logs are automatically deleted after 30 days.

Server logs (Google Cloud Logging)

The server the Bot runs on ships its console output to Google Cloud Logging, where it is retained for 30 days and then automatically deleted. These are operational logs — startup and shutdown events, command routing, errors and stack traces, database connection state, and the running version and commit.

As with alert logs, an error or stack trace could incidentally contain a Discord user ID if the failure occurred while processing that person's command. We verified that no log statement in the Bot deliberately writes a user ID, but an error object can carry one. These logs are not indexed by user, are never used to analyse or profile users, and are readable only by the administrator.

If you use GitHub

Filing an issue or pull request on our GitHub repository means GitHub processes your data under GitHub's Privacy Statement. That's GitHub's processing, not ours, and it is entirely separate from using the Bot.

The repository's visibility may change at any time, without notice. It may be public or private at any given moment, at the maintainer's discretion. If it is public, anything you post there is visible to anyone. This policy, the Terms of Service, and the Bot's behaviour do not depend on that setting — they apply identically either way, and these documents remain published at their permanent public URLs regardless.


What we do NOT collect

❌ We do not haveWhy
Your messagesThe Bot runs with only the Guilds gateway intent. It does not have the Message Content intent, so Discord never sends us message text. A technical impossibility, not just a policy promise.
Your DMsSame reason.
Your email addressNever requested, never received from Discord.
Your real nameNever requested.
Your Discord username or display nameUsed momentarily to render a response, never written to the database.
Your IP addressDiscord handles the connection; we never see it.
Payment informationThe Bot is free and has no payment feature.
A list of your serversNot collected or stored.
Analytics or tracking dataNo analytics SDK, no telemetry, no tracking pixel, no ad network, no fingerprinting.
CookiesThere is no website. The Bot runs entirely inside Discord and sets no cookies or similar storage on your device.
Voice data, location, contacts, or biometricsNot applicable, not collected.

We do no profiling, no behavioural advertising, and no automated decision-making producing legal or similarly significant effects (GDPR Art. 22).


Why we process it, and our legal basis

PurposeLegal basis (GDPR Art. 6)
Remembering your preferencesConsent — you chose to set them (Art. 6(1)(a))
Making the Bot work when you invoke a commandContract — the Terms of Service (Art. 6(1)(b))
Keeping the Bot secure and stable (cooldowns, crash logs)Legitimate interests — running a functioning, non-abused service (Art. 6(1)(f))
Complying with legal obligationsLegal obligation (Art. 6(1)(c))

No special category data (Art. 9) is processed — no health, biometric, racial or ethnic origin, political, religious, or sexual-orientation data.

Under PIPEDA, our basis is your implied consent: you install the Bot and set a preference, and we store it for the obvious purpose of honouring it. You can withdraw consent at any time (§9).

A note on PIPEDA's scope. PIPEDA applies to organisations collecting personal information "in the course of commercial activity." This Bot is free and non-commercial, so PIPEDA arguably doesn't bind us at all. We comply with it regardless, and don't rely on that argument to hold anything back.


Who your data is shared with

We do not sell your data. We do not share it for advertising or cross-context behavioural advertising. We do not disclose it to data brokers. We have never done so, and we have no plans to.

ProviderWhat it handlesWhere
Discord Inc.The platform itself — your ID, your interactionsPer Discord's Privacy Policy
MongoDB Atlas (MongoDB, Inc.)Stores your preference record🇨🇦 Azure Canada Central (Toronto)
Google Cloud Platform (Google LLC)Hosts the server the Bot runs on🇺🇸 us-east1 (South Carolina)
Google Cloud Logging (Google LLC)Server logs, 30-day retention🇺🇸 United States
Google Cloud Vertex AI (Google LLC)Admin-only image extraction — no end-user data🇺🇸 United States
Cloudinary Ltd.Hosts cached game images only🇺🇸 United States
Cloudflare, Inc.Serves these legal documents as a public web pageGlobal edge network

About Cloudflare: it hosts this policy and the Terms of Service so they are publicly readable, as Discord requires. It has no role in the Bot itself and never sees your Discord data. Like any web host, it processes standard request data — including your IP address — when you load these pages, under Cloudflare's privacy policy. Reading this page is the only thing that involves them.

Three clarifications worth making

Your stored personal data stays in Canada. The UserPreference records — the only place your preferences live — are in an Atlas cluster hosted in Azure Canada Central, Toronto. Verified 2026-07-28 21:36 EDT by resolving the cluster's DNS records.

Cloudinary holds no personal data. The images there are game screenshots and weapon artwork supplied by the administrator. Your avatar is never uploaded.

No AI system processes your data. The /autobuild command sends screenshots to a Gemini model for text extraction, but it is restricted to the administrator's own Discord account. No end-user data, image, or message is ever sent to any AI service.

Two details that matter here:

If a provider mishandles your data

We choose our providers carefully and rely on their published privacy terms and data processing agreements. But we are one person, and we have no ability to audit, inspect, or control what Discord, Google, MongoDB, or Cloudinary actually do inside their own systems.

So, plainly:

Being honest about a limit of this section. If data protection law applies to us, we are the controller, and a controller carries responsibility for choosing and overseeing its processors that it cannot simply disclaim in a privacy notice. This section allocates contractual risk between you and us and tells you the truth about what we can and can't control. It does not, and cannot, override any obligation the law places on us, and we don't pretend otherwise.

Other disclosure

We may disclose information where legally required — a valid court order, subpoena, or law-enforcement request under Canadian law — or where necessary to investigate a security incident or protect someone's rights or safety. Given what we hold, such a request would yield very little. Where we are lawfully permitted to tell you about such a request, we will.

If the Bot were ever transferred to another operator, your data could transfer with it. We would give notice first, and you could delete your data beforehand.


International transfers

Your stored preferences do not leave Canada. They sit in Azure Canada Central.

Some processing happens elsewhere: the server that runs the Bot is in the United States (Google Cloud us-east1), so your data is handled in memory there while a command runs. Discord operates globally and handles your data under its own policy.

If you are in the EEA, the UK, or Switzerland: Canada holds a partial adequacy decision from the European Commission for organisations subject to PIPEDA, which means transfers to Canada are recognised as offering adequate protection. For the US-based processing, we rely on Google's transfer mechanisms — Standard Contractual Clauses and the EU–US Data Privacy Framework — as set out in the Google Cloud data processing terms.

Given the data involved is a user ID and colour preferences, the practical risk of these transfers is low.


How long we keep it

DataRetention
Your preference recordKept until you ask us to delete it — see §9
Alert logs30 days, then automatically deleted
Server logs (Google Cloud Logging)30 days, then automatically deleted
In-memory cachesUntil the next restart or deploy — hours to days
Cloudinary game imagesUntil the underlying content rolls out of the Bot's history

An honest disclosure about deletion

There is currently no automated deletion and no self-service delete command.

Removing the Bot from your Discord account stops all future interaction, but does not by itself erase your stored preferences — they simply sit unused.

Deletion is currently handled manually, on request, by email. That is a legitimate and compliant route — the law requires that you be able to exercise the right, not that a button exist — but we consider the absence of self-service a shortcoming rather than a design choice. A /settings delete option and an automatic clean-up of long-dormant records are planned, and this policy will be updated when they ship.

/settings currently lets you change stored values, which overwrites them. It has no reset or delete.


Security

What actually protects your data:

The limits, stated plainly: this is a personal project on a single small server. There is no formal information-security programme, no penetration testing, no SOC 2 audit, and no 24/7 monitoring. No system is perfectly secure, and we cannot guarantee absolute security.

The mitigating factor is that there is very little to lose — a public Discord ID and some colour preferences. No passwords, no emails, no payment details, no message content.

If there's a breach

If a breach creates a real risk of significant harm, we will:

  1. Report it to the Office of the Privacy Commissioner of Canada as PIPEDA requires, and keep a record of it.
  2. Notify affected users through the Bot or the project's public channels, without undue delay.
  3. For EEA/UK users, notify the relevant supervisory authority within 72 hours where GDPR requires it, and notify you directly where the risk is high.

Your rights and how to use them

Whoever and wherever you are, you can ask us to do all of the following. We apply the strongest standard to everyone rather than sorting users by jurisdiction.

RightWhat it means
🔍 AccessGet a copy of everything stored about you
✏️ CorrectionFix anything inaccurate
🗑️ DeletionHave your record erased entirely
📦 PortabilityReceive your data in a machine-readable format (JSON)
Object / restrictObject to legitimate-interests processing, or ask us to pause it
↩️ Withdraw consentAt any time, without affecting past lawful processing
🚫 Non-discriminationWe will not degrade the Bot for you for exercising a right

How to make a request

Email harkirat117@gmail.com with the subject line "Privacy Request", and include:

  1. Your Discord user ID — the numeric one. In Discord: Settings → Advanced → enable Developer Mode, then right-click your own name and "Copy User ID".
  2. What you want — access, correction, deletion, a copy of your data, or withdrawal of consent.

That's the whole process. There is no form, no account, and no fee.

Verifying it's really you

Because a Discord user ID is public, we need to know the request actually comes from the account holder before we act on it — otherwise anyone could delete someone else's settings.

We will ask you to confirm the request from the Discord account in question, normally by sending a direct message to the administrator (dior) from that account referencing your email. If we can't reasonably verify you, we may decline to act, and we'll tell you why (GDPR Art. 12(6)).

This step exists to protect you, not to obstruct you.

Timing

What deletion actually does

We delete your UserPreference record entirely. Your preferences revert to defaults, and the Bot behaves as though you'd never used it. Nothing is retained in a shadow copy.

Two honest caveats:

Complaints

If you're unhappy with how we've handled your data, please tell us first — but you have every right to go straight to a regulator:

A note on California

The CCPA/CPRA applies to "businesses" meeting thresholds — over $25M in annual revenue, personal information on 100,000+ consumers, or 50%+ of revenue from selling personal information. We meet none of them, so the CCPA does not apply to us as a matter of law.

We honour the equivalent rights anyway. For the record, in CCPA terms: the only category of personal information we collect is identifiers (a Discord user ID) plus user-set preferences; we collect it directly from your use of the Bot; we use it solely to operate the Bot; we do not and have never sold or shared personal information; and we do not collect sensitive personal information.


Children's privacy

The Bot is not directed at children. You must meet Discord's minimum age for your country — 13 in most places, and 14, 15, or 16 in parts of the EU and elsewhere. See §3 of the Terms of Service.

We do not knowingly collect data from anyone below that age, and we have no mechanism to verify age beyond Discord's own — we rely on Discord's enforcement of its minimum age.

If you believe a child's data is stored, email harkirat117@gmail.com and we will delete it promptly and without requiring the verification steps in §9.2.

Because we never collect names, emails, photographs, or message content, the data we hold about any user — including a young one — is limited to a Discord ID and display preferences.


Third-party links and content

The Bot displays images and information sourced from third parties and may link elsewhere. We are not responsible for the privacy practices of any third-party site or service. Discord's own handling of your data is governed by Discord's Privacy Policy, which is worth reading — it covers far more data than we ever see.


Changes to this policy

We may update this policy. When we do:

Continued use after a change takes effect means you accept the updated policy. We will not apply a materially different use of already-collected data retroactively without your consent.


Contact

Harkirat Mangat ("dior") — Data Controller Ontario, Canada 📧 harkirat117@gmail.com

Email is the canonical contact and always reaches us. We deliberately don't list a repository link here, because the repository's visibility can change (§2.5) and a contact point in a privacy policy must not be able to go dead.

For privacy requests, use the subject line "Privacy Request" and include your Discord user ID.


Appendix A — Complete data inventory

Every field stored about a user. This mirrors the UserPreference schema, which you can read yourself at models/UserPreference.js.

Identity

Preferences

Cached colour values (derived, not raw images)

That's the whole list. It mirrors the schema in the source code rather than paraphrasing it, so it can be checked line-by-line against the software itself. If you have access to the repository you can verify it directly; if you don't, ask and we will show you the relevant file.


Appendix B — Change history

VersionDateChange
1.028 July 2026Initial policy.

Future revisions will be listed here. The complete drafting history is kept in the repository's git log.


Appendix C — How each claim was verified

A privacy policy is a set of enforceable representations. Saying more than is true is worse than saying nothing. Every factual claim in this policy was checked against the running software rather than asserted, and this table records how.

ClaimHow it was verified
We cannot read your messagesThe Discord client is constructed with GatewayIntentBits.Guilds only — no Message Content intent. Verified in index.js.
No analytics, telemetry, or trackingSearched the codebase for analytics and error-reporting SDKs (Sentry, PostHog, Mixpanel, Google Analytics). None present.
The exact fields we storeRead directly from the UserPreference Mongoose schema. Appendix A is a transcription of it, not a summary.
Alert logs deleted after 30 daysRETENTION_DAYS = 30 in utils/alertStore.js, with a matching deleteMany on createdAt.
Server logs deleted after 30 daysGoogle Cloud Logging default retention, as relied on by scripts/vmstatus.sh.
Your data is stored in CanadaResolved the Atlas cluster's DNS records to mtm-azure-**canatral**-… — Azure Canada Central, Toronto.
Cloudinary stores in the USCloudinary's published documentation: standard accounts default to US storage; EU residency is an Enterprise option.
We use Vertex AI, not the consumer Gemini APIThe request endpoint in utils/visionExtract.js is aiplatform.googleapis.com, project- and location-scoped — not generativelanguage.googleapis.com.
No AI receives end-user data/autobuild is the only AI call site and is gated on the administrator's Discord ID.
Admin commands are locked to one accountALLOWED_ADMIN_ID guards in commands/manage.js, commands/autobuild.js, and the central interaction router.
There is no automated deletionSearched for every deleteOne / deleteMany / findOneAndDelete in the codebase. None operates on UserPreference. This is why §7.1 discloses a shortcoming instead of claiming a capability.
/settings has no reset or deleteSearched commands/settings.js for reset/restore-default handling. None exists — it only overwrites individual values.
No cookiesThe Bot has no web surface. Cloudflare serves these documents; that is the only web interaction.

Where we could not verify something, we said so rather than guessing — see the backup-retention caveat in §9.4 and the honest limits stated in §5.2, §7.1, and §8.

You are welcome to check any of this yourself, or to ask us to show you the relevant code.


Dior's Builds is an unofficial fan project and is not affiliated with Activision Publishing, Inc. or Discord Inc.