Files
autoreg-skills-max/skills/discord-automation/SKILL.md

125 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: discord-automation
description: Automate Discord account management — register accounts, join servers, solve captchas, manage tokens, handle rate limits. Covers API and browser approaches with tradeoffs.
category: automation
trigger: discord, discord token, discord register, discord join, discord captcha, discord server join, discord hcaptcha, discord API
---
## Overview
Programmatic Discord operations via API (fast but fragile) and browser (slow but more human-like). Covers: token lifecycle, registration, server joining, captcha solving, rate limits.
## Token Lifecycle
**User account tokens from automated sources die FAST.** From non-residential IPs (datacenter/VPS), tokens survive 2–3 API requests before returning 401. Discord fingerprints the IP + User-Agent and invalidates sessions that look programmatic.
- Check token health with GET `/users/@me` — if 401, token is dead, move on
- Do NOT waste time debugging dead tokens — just get a fresh one
- Prefer batch: all independent reads in one call to maximize utility per token
- Joining servers with captcha is the hardest case — requires 3+ requests (join attempt → get captcha → wait for solve → join with captcha), which almost always exceeds token lifetime
## Registration API
```
POST https://discord.com/api/v9/auth/register
Body: {
"email": "...",
"username": "...",
"password": "...",
"invite": "nicnames", // optional, joins server after registration
"consent": true,
"date_of_birth": "1995-04-20",
"fingerprint": "<from GET /experiments>"
}
```
### Rate Limiting
After ~3 registration attempts from the same IP, Discord returns 429 with `retry_after` (~96 seconds). Wait the full duration — sequential 429s stack.
### Email Already Registered
Discord permanently stores email→account mappings. Recycled temp emails (AnyMessage, emailnator, etc.) are virtually guaranteed to return `EMAIL_ALREADY_REGISTERED`. See `anymessage-email-api` skill pitfall #14. **Use a fresh, never-before-used email for Discord registration.**
## Server Joining
```
POST https://discord.com/api/v9/invites/{code}
Headers: Authorization: {token}
Body: {} // or {"captcha_key": "...", "captcha_rqtoken": "..."}
```
- 200 = joined
- 400 with `captcha_sitekey` = hCaptcha required (see Captcha Solving below)
- 401 = token dead
- 403 with code 10008 = invite invalid, banned, or membership screening required
## Captcha Solving
Discord uses hCaptcha (sitekey: `a9b5fb07-92ff-493f-86fe-352a2803b3df`). Enterprise hCaptcha with `rqdata` payload.
### AntiCaptcha (✅ confirmed working)
```
POST https://api.anti-captcha.com/createTask
{
"clientKey": "{key}",
"task": {
"type": "HCaptchaTaskProxyless",
"websiteURL": "https://discord.com",
"websiteKey": "a9b5fb07-92ff-493f-86fe-352a2803b3df",
"data": "{rqdata}" // from join response, if present
}
}
```
Solve time: ~8–15 seconds. Cost: ~$0.002 per solve.
Poll: `POST /getTaskResult` every 2–4 seconds.
### Capsolver (⚠️ may block Discord tasks)
Tested and returned `ERROR_INVALID_TASK_DATA` with "violation of usage policies" for Discord hCaptcha. Not reliable for this target.
### 2Captcha/TWOCAPTCHA keys
User-provided "TWOCAPTCHA" keys did NOT work with standard `api.2captcha.com` or `rucaptcha.com` endpoints (returned `ERROR_KEY_DOES_NOT_EXIST`). The `twocaptcha.com` domain is parked. Verify key validity before relying on it.
## Browser Approach
### What works
- **Invite page registration form**: `https://discord.com/invite/{code}` loads a simplified registration form (display name + date of birth). Form renders reliably.
- **NicNames.com**: Full site works in Browserbase, signup and login functional.
### What doesn't work well
- **Discord SPA** (`/app`, `/login`, `/register`, `/channels/@me`): Frequently shows blank skeleton (1 generic clickable element). Bot detection likely.
- **Date pickers** (comboboxes): Discord's React date-of-birth pickers are hard to automate — clicks on options don't always register. Use JS console workarounds.
### JS Console for Discord forms
When browser clicks fail, use `browser_console` to manipulate form state directly:
```js
// Find inputs
document.querySelectorAll('input')
// Click buttons by text
Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Save')).click()
```
## Rate Limits & Backoff
| Trigger | Response | Cooldown |
|---------|----------|----------|
| Registration spam | 429 + retry_after | ~96 seconds |
| Join attempts | hCaptcha challenge | Solve captcha |
| API requests from server IP | Token → 401 | Get fresh token |
| Too many requests | 429 global | Check retry_after header |
## NicNames Promo Flow (Discord-Dependent)
1. Join Discord server: `discord.gg/nicnames` (guild ID: `964607134136430623`, ~6400 members)
2. Complete membership screening (MEMBER_VERIFICATION_GATE_ENABLED)
3. Verify with **Captcha.bot** (Discord bot)
4. Run `/promos` command
5. Receive one-time promo code
6. Apply code at NicNames checkout for free/discounted .cyou, .bond, .icu, .sbs, .cfd, .qpon, .buzz domains
## Pitfalls
1. **Tokens die in seconds, not minutes** — from non-residential IPs. Plan for 2–3 requests max per token. Don't design workflows that need a token to stay alive for 30+ seconds.
2. **Captcha solve time kills tokens** — AntiCaptcha takes 8–15s. By the time captcha is solved, the token is usually dead. Either: (a) use browser-based join (no captcha needed when logged in), (b) pre-solve captcha and use within seconds, or (c) accept that join-via-API is a 2-token operation (first token gets captcha params, second token submits solved captcha).
3. **Registration email uniqueness** — Discord NEVER forgets an email. Recycled temp emails are a dead end. Always verify an email is fresh before attempting registration.
4. **Browser SPAs are fragile in Browserbase** — Discord's React SPA frequently fails to hydrate. The invite page form is the most reliable entry point.
5. **AntiCaptcha is the go-to solver for Discord** — Capsolver blocks Discord tasks, TWOCAPTCHA keys may not work. Test balance with `getBalance` before creating tasks.