What user/guild specific data is collected by the Sentry extension?
I'm currently in the process of writing up a privacy policy for a bot and just wanted to know what data is sent to Sentry that I'd need to include in it.
Solution:Jump to solution
Sentry submission data
The following sections explain precisely what data Kord Extensions will send to Sentry, assuming you're using the provided default
SentryAdapter
and not your own custom subtype.
Note: Sentry includes a number of options that aid with GDPR (and other privacy law) compliance. It's advisable to look through the settings that Sentry provides, and it's important to anonymise (or delete) Sentry events when the information is no longer needed....21 Replies
Oh hey, Pyrrha
yknow it'd be smart to document that for compliance wouldn't it
give me a few
hihi lol
in the case of KordEx itself, I can go ahead and compile a list
however it's worth noting that the SentryContext is exposed to extensions so they can add their own context via eg breadcrumbs
but anyway if you give me a bit I'll write up a longer message you can mark
sweet as, thanks
just gotta brb
Solution
Sentry submission data
The following sections explain precisely what data Kord Extensions will send to Sentry, assuming you're using the provided default
SentryAdapter
and not your own custom subtype.
Note: Sentry includes a number of options that aid with GDPR (and other privacy law) compliance. It's advisable to look through the settings that Sentry provides, and it's important to anonymise (or delete) Sentry events when the information is no longer needed.
The data below was compiled using an IDE's "search for usages" feature. It should be correct as of this writing, on the 19th of November, 2023.
Bundled Frameworks
Commands Framework
On command execution failure, event submitted to Sentry containing:
- Any breadrumbs provided by the command's logic, which may contain anything
- Channel ID
- Channel name (only if a guild channel)
- Channel type (DM or guild channel)
- Command arguments
- Command name
- Command type
- Exception message, traceback and code location, including surrounding lines of code
- Guild name and ID
- Message content (if the message caused a chat command to be executed)
- Parent extension name
- User ID
- User name (including discriminator if applicable)
Components Framework
On component action execution failure, event submitted to Sentry containing:
- Any breadrumbs provided by the component action's logic, which may contain anything
- Channel ID
- Channel name (only if a guild channel)
- Channel type (DM or guild channel)
- Component ID
- Component type
- Exception message, traceback and code location, including surrounding lines of code
- Guild ID and name (if applicable)
- Message ID (no message content)
- User ID
- User name (including discriminator if applicable)
Event Handlers
On event handler execution failure, event submitted to Sentry containing:
- Any breadrumbs provided by the event handler's logic, which may contain anything
- Channel ID
- Channel name (only if a guild channel)
- Channel type (DM or guild channel)
- Event class name (if available)
- Exception message, traceback and code location, including surrounding lines of code
- Guild ID and name (if applicable)
- Message ID, if the event concerned a message
- Parent extension name
- Role ID and name, if the event concerned a role
- Thread ID and name (if applicable)
- User name (including discriminator if applictable) and ID, if the event concerned a user
Scheduler Tasks
On scheduler task execution failure, event submitted to Sentry containing:
- Any breadrumbs provided by the tasks's logic, which may contain anything
- Exception message, traceback and code location, including surrounding lines of code
- Number of task executions
- Task name
First-Party Modules
Mappings Extension
The following information is provided via breadcrumbs, to be submitted along with the rest of the data the commands framework provides on execution failure:
- Query info: mappings channels, mappings namespaces, mappings type, mappings versions, query, result count@Pyrrha
hope that helps
tysm!
it occurs to me that it might be useful to be able to turn some of these off
might be worth putting an issue up
is there a way to turn sentry reporting off for a specific user/guild so I can let people opt-in/out?
There aren't really any configuration options other than those currently documented at https://docs.kordex.dev/config-extensions.html#sentry
Kord Extensions Help
Extensions | Kord Extensions
there isn't anything like that
interesting idea though
wouldn't be complex to add tbh
yeah, id really like to give users full control of how anything related to them is collected/etc
mind opening an issue so I don't forget?
it's late o'clock here
yeah sure, just on github?
yep yep
GitHub
Sentry opt-in/out capibilities for users and guilds. · Issue #260 ·...
Summary Allow users and guilds to opt-in/out of Sentry reporting. Current Behaviour If enabled, all errors are sent to Sentry which include user and guild specific data with no way to opt-in/out Pr...
thanks :>
left a response with a rough idea
thanks!
o7
The scope has expanded a bit to make things a lot more flexible, but it shouldn't add much dev overhead
(as well as the predicates, I'm allowing the configuration of some of the data types sent to Sentry, along with a modification pipeline)
it will no longer be possible to submit a sentry event, exception or breadcrumb without a sentry capture object, although I'll make it simple enough to use this
this is gonna take a while to implement but it'll be worth it
getting fairly close
all relevant SentryContext functions have been done now
I'm not going to filter feedback objects the way I'm handling everything else, but those are handled by the sentry feedback extension anyway
I'm quite happy with what I've created so far, it even supports processing hint/tag/etc maps
this processing even supports special key formatting, so you can tell it what type your value relates to when it comes to personal data
eg
key::user
will be stored as key
and filtered out if user data is disabled
good progress made, attempting the first build
(there will be things to fix for sure)
a fun side effect of this is it vastly simplifies some of the internal code
kordex core module now compiles
I think it's pretty much done
I'll get a release set up and then push an update to the docs