Data Collection
As of version 2, Kord Extensions includes a data collection feature. Every 30 minutes, this feature collects some statistical data from your bots, submitting it to an open-source server run and controlled by the Kord Extensions team.
This feature is intended to provide the developers with guidance on where to focus their efforts as well as interesting statistical information that will be made available to everyone.
General Info
Data collected is stored on a server located in Germany, owned by Hetzner. This data is encrypted at rest (along with all backups) and is secured through containerization, network isolation, and other standard security practices.
The data collected is not sold and is only shared with the Kord developers. Direct access is limited to the Kord Extensions lead maintainer and one of Kord's core developers. However, graphs and summaries based on that data, without bot/team information, are made available to the public.
All data submissions are assigned a UUID, which is stored by your Kord Extensions bot via a storage unit. While we believe the data collected is not considered personal information under the GDPR, we provide several mechanisms that allow you to use this UUID for data retrieval and removal:
By changing your data collection level to None (as explained below), your Kord Extensions bot will stop collecting data and will use the UUID to delete any stored data from the data collection server.
The UUID may be used to directly access the data collection API:
HTTP GET:
https://data.kordex.dev/data/:uuid
- retrieve the stored data for the given UUID.HTTP DELETE:
https://data.kordex.dev/data/:uuid
- delete the stored data for the given UUID.
We may decide to create a simple UI for this later.
If all else fails or you have any questions, contact us via Discord, or email our GDPR officer at
gdpr
(at)kordex.dev
.
The default data collection level (assuming nothing has been configured) is Standard.
Collection Levels
Kord Extensions provides the following data collection levels.
None
Setting this level will disable data collection.
If you had a different level set previously, Kord Extensions will delete your data from the data collection server.
Minimal
This level collects the following data in all cases:
The date of submission and the last updated date.
Whether your bot is running in development mode.
The versions of Kord and Kord Extensions your bot uses.
The name of the fork you're using, if you're using a fork, and it has modified the data collector to add its name.
This level also collects the following data if the bot was built using the KordEx Gradle plugin:
A list of first-party modules the bot is using.
Standard
This level collects the data collected by the Minimal level, as well as the following:
The Discord ID and the name of your bot.
The number of extensions and plugins your bot has loaded.
The number of guilds your bot can see.
A list of intents enabled by your bot.
Number of top-level chat commands registered.
Number of global application commands registered, split into message, slash, and user commands.
Data relating to your bot's runtime environment:
Current JVM and Kotlin versions.
Extra
This level collects the data collected by the Minimal and Standard levels, as well as the following:
A list of event types your bot is currently handling.
The names of the extensions and plugins your bot has loaded.
Bot ownership information:
If the bot is owned by a team: The ID and name of that team.
If the bot is owned by a single person: No ownership data is collected.
Data relating to your bot's runtime environment:
Total available memory.
Physical CPU count, thread count, and processor speed.
Configuration
Storage
Your bot needs to store some information relating to data collection for it to function properly:
The latest data collection level used.
A UUID representing the bot's data on the data collection server.
This data is stored through a storage unit, via the data adapter system. By default, this means data will be stored in ./data/
, but you can change that by supplying another data adapter, such as the official MongoDB data adapter.
Level
There are several ways to configure your bot's data collection level. They're listed below in order, with earlier options overridden by later ones:
The preferred approach: Set it via the KordEx Gradle plugin.
Set the
DATA_COLLECTION
environmental variable toextra
,standard
,minimal
, ornone
.Set the
dataCollection
system property toextra
,standard
,minimal
, ornone
.Set the
dataCollectionMode
property in your bot's builder, as explained in the configuration section.