# No Kidding <br> <center><img src="https://i.imgur.com/FbJ1yXe.png" width="200"></center><br><br> **No Kidding** is a Discord bot that implements secure age-gating at little or no cost to community administrators. This bot has, for now, only two commands and one webhook: <br> 1. **`/age-gate`** `[snowflake-id]` `[role-snowflake-id]` `[min-age]` `[max-age]` locks down the given guild, channel, category of channels, or role to exclude all members who do not fall within the age range specified. *Default is 18+ for the whole server with a new role.* 2. **`/check-id`** `<snowflake-id>` will create a new verification session against the user snowflake ID provided, contact the target user with a link to verify, and apply to that user the role that was specified at the time of age-gating. 3. **`POST verify-id`** is an endpoint which receives verification results from Stripe, retrieves the date of birth, creates a fingerprint comprised of the given name, family name, date of birth, and state or country of certification. Multiple fingerprints may be generated if a collision occurs, but to a limited extent only; it is more likely at that point that someone is reusing a friend's ID. That fingerprint is used as the primary key in a table of verified dates of birth, and the date of birth is stored next to the irreversible fingerprint generated already. <br> ## Implementation Having already obtained a working API key from Stripe, I can begin implementing this bot today. ### Cloudflare Workers An easy choice would be to use a [[Cloudflare Worker]]. Unfortunately, it's not possible to efficiently execute most of the operations required to age-gate a server during the provided three-second window in which to respond to a Discord-initiated webhook. We still need to operate on the server which requires us to authenticate with and connect to their gateway instead of simply doing everything from within slash command response code. I was hoping to avoid this, but oh well. ### Cloudflare Workers and DiscordGo