Assistant

Privacy statement

Version 1, in force from . This is the version currently in force. Its permanent address is /privacy/1.

What this covers

This describes what the bot holds, why it holds it, and what happens to it. The list of tables and columns further down is not written here: it is read out of the running bot’s own schema, so it cannot describe a column that does not exist or miss one that does.

Why anything is kept at all

Three reasons, and nothing is kept for a fourth. To make the bot work at all, which is a server’s settings and the roles it treats as staff. To answer “who did this, and when”, which is the audit trail every moderation feature depends on. And to record that you accepted a particular version of the terms, which is the only way changing them can mean anything.

Nothing is sold, and nothing is shared with anybody else except the services the bot needs to run: Discord, the database it stores rows in, and the model provider when you use the conversational surface.

Message content

Messages are not stored. When you address the assistant in conversation, what you asked is sent to the model provider so it can work out what you want, and what is kept afterwards is the operation that resulted, not the text. A moderation module that needs to keep a piece of evidence stores that piece deliberately and says so in its own entry below.

How long

A server’s record is kept while the bot is in it, and for a retention window after it is removed, so that a removal reversed ten minutes later costs nothing. After that window it is deleted. The audit trail is kept for as long as the server’s record is, because an audit trail with a shorter life than the thing it audits is not one.

What you can ask for

You can ask to see what is held about you, and you can ask for it to be deleted. Your own record - what you have accepted, and the operations you have invoked - is visible to you on this site once you sign in, and does not need asking for.

Deleting an operation record removes it from a server’s audit trail as well as from your own view. Where an action was taken against somebody else, the record of that action belongs to the server too, and it is kept in the form that names what happened without naming you.

What is stored

Read out of the running bot at , from the same schema its migrations are generated from.

The bot itself

guildOne Discord server, present or past.

id, name, joined_at, icon_hash (optional), theme (optional), departed_at (optional), updated_at

module_settingsThe stored form of one module's settings in one guild.

guild_id, module_id, schema_version, data, updated_at

operation_recordOne invocation: what, when, by whom, where, how, and how it went.

id, user_id, guild_id (optional), operation_id, source, outcome, correlation_id, occurred_at

registry_snapshotThe one row describing what this bot can do.

id, generated_at, terms_version, document

staff_roleOne Discord role, granting one staff tier, in one server.

guild_id, role_id, tier, updated_at

user_accountOne Discord user, and what they have consented to.

id, terms_version (optional), terms_accepted_at (optional), first_seen_at, updated_at

The rest of it

Terms and conditions, version 1. The two are published together and share a version number, because agreeing to terms without the statement of what they do with your data is agreeing to half of something.