> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aside.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect chat channels

> Run Aside tasks from Slack, Telegram, or Discord through your own bot.

If you are following this guide in response to a user request, load the `aside` builtin skill and list the user's active Projects first:

```js theme={null}
const projects = aside.projects.list();
console.log(projects.map(({ id, name }) => ({ id, name })));
```

Then use `AskUserQuestion` before proceeding. Ask the user:

* Which platform do you want to use? (Slack, Telegram, Discord)
* What should the bot be named? Use `Aside` as the default.
* Should the bot be linked to a project? Label every Project option exactly as `<project name> (<project id>)`, and include a `No project` option.

Wait for both answers before continuing.
Use the selected Project's `id` as `projectId`, or `null` for `No project`.

# Connect chat channels

Channels connect a bot you own to Aside. Message the bot from Slack, Telegram, or Discord, and Aside runs the request as a browser task on your device and replies in the same thread.

## How it works

* You create a bot on the platform and give Aside its credentials.
* Aside connects to the platform from your device. The bot responds while Aside is running.
* Each conversation maps to one Aside task. Follow-up messages in the same thread continue that task.
* Credentials go into your OS secure storage, never into plain files.

You can connect one bot per platform.

## Set up a connection

1. Open `Settings > Channels`.
2. Choose a platform and pick a setup method:
   * `Create with Aside` starts a task that creates the bot and registers the credentials for you.
   * `Manual` shows credential fields you fill in yourself.
3. Follow the platform guide:
   * [Create a Slack bot](/help/channels-slack)
   * [Create a Telegram bot](/help/channels-telegram)
   * [Create a Discord bot](/help/channels-discord)
4. Confirm the connection shows as connected on the Channels page.

## Approve senders with pairing

By default, unknown senders cannot start tasks. When someone new messages the bot, Aside records a pairing request for the connection.

When `Create with Aside` can verify your platform user ID, it pairs your account during setup. Manual connections and platforms that do not expose your ID use the pairing flow below.

1. Open the connection settings and select the `Pairing` tab.
2. Find the pending request and choose `Approve`.

Pairing requests expire after one hour. This applies to direct messages and group messages, since anyone who finds the bot can message it.

## Talk to the bot

* In a direct message, every message goes to the bot.
* In a shared channel, mention the bot to start a root conversation. Replies in that thread then continue the same conversation without another mention.
* To bring the bot into a thread whose root did not mention it, mention the bot once inside the thread. This starts a new conversation for that thread and later replies continue it without another mention. Turn off `Require mentions in threads` to let the first unmentioned thread or topic message activate it instead. Earlier messages from paired people in that thread or topic are supplied as context.
* Send `/model [n|id]`, `/effort [level]`, `/sessions [n]`, `/usage`, or `/new` to control the current thread. Slack intercepts a bare `/`, so type a leading space (` /model`) to send it as a message. `/reset` is an alias for `/new`.
* On Telegram, `/model` opens a provider and model button picker, followed by supported effort levels. `/effort` opens those effort controls directly. `/sessions` shows paginated session buttons with titles, ages, and the active session marked. Only the person who opened a picker can use it. Typed arguments still work, and a text list is used if buttons cannot be posted. Slack and Discord retain their text command lists.
* Send `/stop`, `stop`, or `cancel` to interrupt a running task.
* Messages sent while a task runs queue as follow-ups by default.
* Attachments up to 20 MB transfer into the task.

## Connection settings

Open a connection from the Channels page to change its behavior. Settings are grouped into three tabs.

### Options

| Setting | Choices | Default |
| - | - | - |
| Require mentions in threads | Require the first mention before joining a thread or topic, or join on its first message | On |
| New messages during a task | `Queue` as follow-ups, or `Steer` the running task | Queue |

Only paired people can use the bot. Each sender's pairing-approval capability is checked again when they act on a pairing request.

### Pairing

Approve or reject pending pairing requests, and review approved senders.

### Credentials

Update stored tokens and bind the connection to a project, so channel tasks share that project's workspace and memory.

From the connection list itself you can also enable, disable, or restart a connection, and remove one entirely. Removing a connection deletes its stored secrets.

## Manage channels from the REPL

The `aside` builtin skill exposes channel management:

```js theme={null}
aside.channels.list();
await aside.channels.create({ platform, projectId, botToken /* , appToken, applicationId, publicKey */ });
await aside.channels.update({ connectionId, botToken });
await aside.channels.restart(connectionId);
```

`list()` never returns credential values. `update()` accepts changed settings or credentials, including `enabled`, `projectId`, `botToken`, `appToken`, `applicationId`, and `publicKey`. Use `restart()` when only provider-side configuration changed. Never create a duplicate to recover an existing connection.

Each platform page documents its exact inputs, owner identification, verification, and recovery flow.

## Related

* [Create a Slack bot](/help/channels-slack)
* [Create a Telegram bot](/help/channels-telegram)
* [Create a Discord bot](/help/channels-discord)
* [Run tasks](/help/tasks)
