πŸ’¬ Interviews

Goal: one Discord message becomes a tiny wizard: user clicks/buttons/types β†’ bot ACKs instantly β†’ message evolves in place β†’ Amy gets clean structured answers β†’ no dead air, no spam, no broken interactions.

Naming - Ompcord vs Amy. Ompcord is the omp⇄Discord bridge (product/plugin); Amy is the bot persona it runs. You install Ompcord; Amy is who answers. Rename phases 1-5 are complete at docs/command/runtime/package level: package name ompcord, wrapper runtime ompcordd.mjs/ompcordd.service, and compatibility for amyd.mjs, /amy, /pi-discord-remote, legacy config, and ~/.omp/amy-sessions/. Repo directory stays pi-discord-amy until final filesystem cutover. See the naming direction.*

Default choice: use a normal embed + legacy message components. Use Components V2 only when you need layout primitives (Container, Section, Text Display) and accept that normal content/embeds are disabled for that message.

For the shared status/options surface behind these flows, see Amy SSOT Embed Dashboard.


βœ… Live-send recipe that finally worked

The success pattern is not β€œdescribe an embed in chat.” It is: launch a short-lived Discord gateway process that posts a real message with embeds + components into the active Amy thread and keeps running long enough to handle component interactions.

Observed live proof (2026-06-10):

| Item | Value | …

Exact launch shape:

…
 
The script reads `DISCORD_TOKEN` / `ALLOWED_USER_IDS` from `/home/usr/.config/amy/amyd.env` unless env vars are already set. It prints only message/thread/session ids β€” **never the token**.
 
**What made it succeed:**
 
1. **Use the active Amy thread id** from `amyd.log` or the current Discord URL.
…
**Minimal β€œdo this again” checklist:**
 
- [ ] Confirm Amy thread id.
…
---
 
## 🚨 Non-negotiable laws
 
| Law                                    | Why it matters                                                                        |
…
 
```js
…
 
---
 
## 🧩 Best UX pattern
 
```text
…
 
Render each question as:
 
```text
…
 
**Use the right input:**
 
| Need                      | Best component                               |
…
 
---
 
## 🧱 Minimal state contract
 
```js
…
 
`custom_id` should be tiny and routable:
 
```text
…
 
Do **not** put full JSON, prompts, secrets, or long labels inside `custom_id`.
 
---
 
## πŸŽ›οΈ Button style rules
 
| Style       | Use for                                  |
…
 
**Copy rule:** button labels should be outcomes, not vague commands.
 
βœ… `Choose Deep`, `Custom answer`, `Confirm plan`  
❌ `OK`, `Yes`, `Option 1`, `Next maybe`
 
---
 
## πŸ“ Hard Discord limits to memorize
 
| Limit                              | Value                                 |
…
 
---
 
## 🧠 Amy/omp integration
 
Current Amy pieces:
 
| File                                         | Role                                                                                          |
…
 
Headless ask bridge:
 
````text
…
 
Stable answer kinds:
 
```text
…
 
Keep that contract stable so existing agent prompts/tools do not break.
 
---
 
## πŸ† Perfect interview behavior checklist
 
- [ ] Posts first embed immediately: β€œQ1/N β€” choose one.”
…
---
 
## 🧯 Failure fixes
 
| Symptom                                  | Root cause β†’ fix                                                                              |
…
 
---
 
## πŸ§ͺ Test matrix
 
| Test               | Expected proof                                                                              |
…
 
---
 
## 🧬 Golden implementation skeleton
 
```js
…
 
---
 
## πŸ”— Source truth
 
- Discord component reference: <https://discord.com/developers/docs/components/reference>
…
 
[…168ln elided; re-read needed ranges, e.g. /home/usr/funday/dev/docs/content/omp/harnesses/ompcord/responsive-interviews.md:29-33,38-40]

Ask Docs

AI assistant to help answer questions about the documentation. Answers are read-only and cite docs/source.

Hi! How can I help you with the documentation today? Answers are read-only and cite docs/source.

Ctrl+Enter to send