> ## 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.

# Webhook

> Publier des messages dans un salon sous n’importe quel nom et avatar, et gérer les webhooks d’un serveur

Un `Webhook` est un moyen de publier des messages dans un salon sous n’importe quel nom. Vous en obtenez un depuis `channel.createWebhook()`, `channel.fetchWebhooks()` ou `guild.fetchWebhooks()`.

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
import type { TextChannel } from 'chapterjs';

async function relay(channel: TextChannel, author: string, text: string) {
  const webhook = await channel.createWebhook({ name: 'Relay' });
  await webhook.send({ content: text, username: author });
}
```

> [!NOTE]
>
> Ce que peut contenir un message est dans [Messages](https://www.chapterjs.org/fr/messages.md) ; ce que prend `send()` ici est [WebhookMessageOptions](https://www.chapterjs.org/fr/reference/message-options.md#webhookmessageoptions).

> [!WARNING]
>
> Le token d’un webhook permet à n’importe qui de publier avec. Il n’apparaît jamais quand vous affichez un webhook ou appelez `toJSON()`, et le bot ne le donne jamais à votre code.

## Propriétés

**id** `Snowflake`

L’identifiant unique que Discord lui a donné.

**createdAt** `Date`

Quand il a été créé : un identifiant Discord contient sa date de création.

**name** `string | null`

Le nom par défaut avec lequel publie le webhook.

**channelId** `Snowflake | null`

L’identifiant du salon où publie le webhook.

**guildId** `Snowflake | null`

L’identifiant du serveur du webhook.

**canSend** `boolean`

Si le bot peut publier avec : seulement les webhooks qu’il a créés.

## Helpers

Ils lisent ce dont le bot se souvient : ils n’envoient jamais de requête.

### toJSON()

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
toJSON(): object
```

Les données du webhook, sans son token : un token est un secret.

## Actions

### send()

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
send(message: string | WebhookMessageOptions): Promise<Message>
```

Publie un message avec le webhook. Un texte seul est son contenu ; voir [WebhookMessageOptions](https://www.chapterjs.org/fr/reference/message-options.md#webhookmessageoptions) pour le reste.

Seul le bot qui a créé un webhook peut publier avec (`canSend`). Sinon `send()` lève une erreur :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
This webhook was not created by the bot: Discord only lets its creator post with it.
```

[Documentation de Discord](https://docs.discord.com/developers/resources/webhook#execute-webhook)

### edit()

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
edit(
  options: { name?: string; avatar?: string | null; channelId?: Snowflake },
  reason?: string
): Promise<Webhook>
```

Change le nom, l’avatar ou le salon du webhook. Voir les [options de modification d’un webhook](#options-de-modification-d’un-webhook).

[Documentation de Discord](https://docs.discord.com/developers/resources/webhook#modify-webhook)

### delete()

```ts theme={"theme":{"light":"github-light","dark":"vesper"}}
delete(reason?: string): Promise<void>
```

Supprime le webhook.

[Documentation de Discord](https://docs.discord.com/developers/resources/webhook#delete-webhook)

## Types

### Options de modification d’un webhook

Ce que prend `edit()`. Chaque champ peut être laissé de côté : seul ce que vous passez change.

**name** `string`

Le nom par défaut du webhook.

**avatar** `string | null`

L’image de l’avatar par défaut du webhook, sous forme de data URI (`data:image/png;base64,...`) ; `null` la retire.

**channelId** `Snowflake`

L’identifiant du salon vers lequel déplacer le webhook.

[Documentation de Discord](https://docs.discord.com/developers/resources/webhook#modify-webhook-json-params)

`WebhookMessageOptions` est dans [Options des messages](https://www.chapterjs.org/fr/reference/message-options.md#webhookmessageoptions).


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