Files
Veskslop/docs/communication.md
T

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

  1. The client receives a MESSAGE_CREATE gateway event.
  2. The core renderer normalizes the event.
  3. The core bridge pushes the event to the daemon.
  4. The daemon applies the trigger rules.
  5. The daemon adds a qualifying message to the log.
  6. 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

  1. Add the rule in poc/src/puppet.ts, in handleEvent.
  2. Keep the rule small and testable.
  3. Add a unit test in poc/src/test-communication.ts when the rule is pure logic.
  4. Run pnpm test:comm.