# Reactions Documentation

## Shared Reaction Semantics

The documentation outlines core requirements for reaction functionality across messaging platforms:

- **Required parameter**: The `emoji` field must be included when adding reactions
- **Removal mechanism**: Setting `emoji=""` removes the bot's reactions (where supported)
- **Targeted removal**: The `remove: true` flag deletes specific emoji reactions (requires `emoji` to be specified)

## Platform-Specific Implementation Notes

Different channels have distinct behaviors for reaction management:

- **Discord/Slack**: An empty `emoji` value clears all bot reactions; `remove: true` eliminates only the targeted emoji
- **Google Chat**: Empty `emoji` removes all app reactions; `remove: true` targets individual emoji removal
- **Telegram**: Empty `emoji` clears bot reactions; `remove: true` requires a non-empty `emoji` for validation purposes
- **WhatsApp**: Empty `emoji` removes the bot reaction, with `remove: true` functioning equivalently but still requiring an `emoji` value
- **Signal**: Reaction notifications generate system events when the configuration setting `channels.signal.reactionNotifications` is enabled
