
# Discord triggers

## Events

| `on`              | Fires when                                                                     |
| ----------------- | ------------------------------------------------------------------------------ |
| `discord.mention` | The bot or one of its managed roles is mentioned in a guild channel or thread. |

## Filters

Discord filters use quoted snowflake IDs:

```yaml
filters:
  guild: "123456789012345678"
  channels: ["234567890123456789"]
  from_users: ["345678901234567890"]
```

Turn on Developer Mode to copy IDs. `from_users` matches the author's user id, `guild` matches the connected guild, and `channels` matches the channel or thread parent. `pattern` matches the start of the text after the mention. All filters must pass.

## Invocation

Put leading inputs directly after the mention:

```text
@Paseo repo=project investigate the failed sync
```

Hub consumes only declared consecutive headers and passes `investigate the failed sync` as `${{ paseo.prompt }}`. See [Hub workflows](/docs/hub/workflows) for the provider-neutral input contract.

## Replies and repository access

Put the reply capability on a step:

```yaml
allow_outputs:
  - type: discord.reply
    max: 5
```

The reply is posted in the triggering thread or channel. The declaration grants the `hub.reply` tool; the prompt has to tell the agent to call it. See [Tell the agent which tool to call](/docs/hub/workflows#tell-the-agent-which-tool-to-call).

A Discord trigger carries no implicit GitHub credential. A step that needs GitHub declares a [`github` block](/docs/hub/github).

See the [workflow scenarios](/docs/hub/workflows#scenarios) for complete step configurations.
