discordlisted
Install: claude install-skill AceDataCloud/Skills
# discord — work with the user's Discord account
This skill has **two modes**, picked automatically by which credential the
connector injected. Check the environment first and follow the matching section:
- **`$DISCORD_USER_TOKEN` is set** → **User Token (BYOC) mode**: full
personal-account actions via the `scripts/discord_user.py` CLI (list channels, read
messages, send / reply). This acts as the user's **real account**.
- **only `$DISCORD_TOKEN` is set** → **OAuth mode**: read-only identity + server
list via `curl`. Channel messages are **not** available in this mode.
```sh
if [ -n "$DISCORD_USER_TOKEN" ]; then echo "mode: user-token (full)"; \
elif [ -n "$DISCORD_TOKEN" ]; then echo "mode: oauth (read-only)"; \
else echo "no Discord connection — connect at https://auth.acedata.cloud/user/connections"; fi
```
Both tokens are **secret — full account access. Never echo or print them.** On
`401`, the token expired or was revoked — tell the user to reconnect at
`auth.acedata.cloud/user/connections`. On `429`, sleep the `retry_after`
seconds, then retry; never parallelize.
---
## User Token (BYOC) mode — full actions
When `$DISCORD_USER_TOKEN` is set, drive the user's real account through
[`discord.py-self`](https://github.com/dolfies/discord.py-self) via the CLI at
`scripts/discord_user.py` (run with `python3`). It logs in with the token only (no
gateway) and prints JSON.
`discord.py-self` is preinstalled in the hosted sandbox (import name `discord`).
Do **not** `