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

# presence()

> Tout ce que déclare presence() : le statut du bot et ce qu’il fait

`presence()` déclare la présence du bot, une fois, depuis n’importe quel fichier de `src/`. Elle prend un objet, `PresenceConfig`.

```ts src/presence.ts theme={"theme":{"light":"github-light","dark":"vesper"}}
import { presence } from 'chapterjs';

export default presence({
  status: 'online',
  activity: { type: 'watching', name: 'le serveur' },
});
```

> [!NOTE]
>
> Comment écrire le fichier, et ce qu’affiche Discord pour chaque type, est dans le
> [guide](https://www.chapterjs.org/fr/presence.md). Cette page liste ce qui existe.

## presence()

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
presence(config: PresenceConfig): PresenceDeclaration
```

Déclare la présence du bot : son statut et ce qu’il fait, affichés sous son nom. Exportez le résultat depuis n’importe quel fichier de `src/`, une fois ; le bot l’a dès qu’il est connecté.

### PresenceDeclaration

Ce que renvoie `presence()` : une déclaration que le framework trouve dans les exports d’un fichier.

**config** `unknown`

Ce que le fichier a donné à `presence()`, pas encore vérifié.

## PresenceConfig

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
type PresenceConfig = SinglePresenceConfig | RotatingPresenceConfig;
```

Ce qu’un fichier donne à `presence()` : `activity` pour une seule, ou `activities` pour plusieurs affichées tour à tour.

### SinglePresenceConfig

Une présence avec une activité, ou aucune.

**status** `PresenceStatusName`

Le statut du bot. `'online'` par défaut.

**activity** `Activity`

Ce que fait le bot. Rien par défaut.

### RotatingPresenceConfig

Une présence dont les activités s’affichent tour à tour.

**status** `PresenceStatusName`

Le statut du bot. `'online'` par défaut.

**activities** `Activities` *required*

Plusieurs activités, affichées l’une après l’autre, chacune pendant son
`for` : une liste, ou une fonction qui la donne.

### PresenceStatusName

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
type PresenceStatusName = 'online' | 'idle' | 'dnd' | 'invisible';
```

Le statut du bot : `'online'` (vert), `'idle'` (orange), `'dnd'` (rouge, « ne pas déranger ») ou `'invisible'` (affiché hors ligne).

## Activities

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
type Activities =
  | readonly Activity[]
  | ((context: PresenceContext) => readonly Activity[] | Promise<readonly Activity[]>);
```

Les activités affichées tour à tour : une liste, ou une fonction qui la donne (éventuellement après une promesse, depuis un store par exemple), exécutée de nouveau chaque fois que la liste a été affichée en entier.

## Activity

Ce que fait le bot : une `PlainActivity` ou une `StreamingActivity`.

### PlainActivity

Une activité qui n’est pas un stream.

**type** `ActivityKind` *required*

Ce que fait le bot, comme l’affiche Discord : « Joue à *name* », « Écoute
*name* », « Regarde *name* », « Participe à *name* », ou le texte lui-même avec
`'custom'`.

**name** `ActivityText` *required*

Ce qui est affiché après le type (ou seul avec `'custom'`).

**for** `Duration`

Combien de temps l’activité s’affiche avant la suivante, 5 secondes au
minimum : `'30s'`, `'2m'`. 30 secondes par défaut. Seule, c’est la fréquence
à laquelle un `name` qui est une fonction s’exécute de nouveau.

### ActivityKind

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
type ActivityKind =
  'playing' | 'listening' | 'watching' | 'competing' | 'custom';
```

### StreamingActivity

Un stream : « Streame *name* », avec un lien vers lui.

**type** `'streaming'` *required*

**name** `ActivityText` *required*

Ce qui est affiché après « Streame ».

**url** `string` *required*

Le stream : Discord n’accepte qu’un lien `https://twitch.tv/` ou
`https://youtube.com/`.

**for** `Duration`

Combien de temps l’activité s’affiche avant la suivante, 5 secondes au
minimum : `'30s'`, `'2m'`. 30 secondes par défaut. Seule, c’est la fréquence
à laquelle un `name` qui est une fonction s’exécute de nouveau.

### ActivityText

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
type ActivityText =
  string | ((context: PresenceContext) => string | Promise<string>);
```

Le texte d’une activité : un texte, ou une fonction qui le donne (éventuellement après une promesse), exécutée chaque fois que l’activité s’affiche.

## PresenceContext

Ce que reçoit une fonction de la présence, à chaque exécution : le nombre de serveurs où est le bot, et les textes des fichiers de langue dans la langue par défaut.

**guilds** `number` *required*

Le nombre de serveurs où est le bot, tous processus confondus.

**t** `Translator`

Les textes des fichiers de langue, dans la langue par défaut. Seulement quand
le projet a des fichiers de langue.

[Documentation de Discord](https://docs.discord.com/developers/events/gateway-events#update-presence)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.