2.7 KiB
2.7 KiB
Communication
This document describes the trigger rules, the trust model, the commands, and the trigger log.
Trigger rules
A message is a trigger when one of these conditions is true:
- The message is a direct message to the puppet. A direct message is a one-to-one DM, not a group.
- The message mentions the puppet. This applies in guild channels and group DMs.
All other messages are ignored.
Trust model
The puppet has one owner and a trust list.
- The owner is always trusted. The default owner is
177117296140091393(zzib). - The trust list holds additional user IDs.
- A trusted user gets the 100-entry log. An untrusted user gets the 30-entry log.
The owner controls the trust list. Commands from other users do not change the list.
Commands
The owner sends commands from Discord. In a direct message, the text is the command. In a guild or a group DM, mention the puppet first.
| Command | Effect |
|---|---|
whitelist list |
Show the owner and the trusted users. |
whitelist add @user |
Add one or more users to the trust list. |
whitelist remove @user |
Remove one or more users from the trust list. |
Notes:
- The owner cannot be removed.
- The command accepts mentions and raw user IDs.
- The daemon replies with a confirmation. The reply uses the same pacing as all other sends.
Trigger log
The log has two ring buffers.
| Buffer | Limit | Content |
|---|---|---|
| Trusted | 100 entries | Triggers from the owner and trusted users |
| Untrusted | 30 entries | Triggers from all other users |
One entry holds these fields:
| Field | Meaning |
|---|---|
id |
The message ID |
channelId |
The channel ID |
guildId |
The guild ID, or absent for a DM |
authorId |
The author user ID |
authorName |
The author username |
content |
The raw message content |
timestamp |
The message timestamp |
trusted |
True for a trusted author |
command |
The parsed command text, when the message is a command |
Event flow
- The client receives a
MESSAGE_CREATEgateway event. - The core renderer normalizes the event.
- The core bridge pushes the event to the daemon.
- The daemon applies the trigger rules.
- The daemon adds a qualifying message to the log.
- The daemon runs a trusted command, when the message is a command.
State file
The daemon stores the owner ID and the trust list in JSON.
- Default path:
poc/.veskslop-state.json. - Override:
VESKSLOP_STATE_FILE. - The trigger log is in memory only. The log resets at restart.
How to add a trigger rule
- Add the rule in
poc/src/puppet.ts, inhandleEvent. - Keep the rule small and testable.
- Add a unit test in
poc/src/test-communication.tswhen the rule is pure logic. - Run
pnpm test:comm.