# Trocar webhooks do Discord

Troque o link do webhook do Discord nos scripts pelo link do log no FiveDash, sem mudar mais nada no script.

Source: https://fivedash.fivex.gg/docs/pt/logs/migrate-from-webhooks

A maioria dos scripts de FiveM manda logs para um webhook do Discord. Para trazer esses logs para o FiveDash, você não precisa reescrever nada: o link do log no FiveDash aceita a mesma mensagem que o Discord aceita. Basta trocar um link pelo outro na config do script. Esta página é para quem cuida dos scripts da cidade.

## Antes de começar

* **Logs criados:** crie um log para cada tipo de log que o script manda. Veja [Criar logs](https://fivedash.fivex.gg/docs/pt/logs/create-logs).
* **Nível de acesso:** **Configurar** no log (ou **Todos os logs** em **Configurar**) para ver e copiar o link.
* **Acesso aos arquivos do servidor:** para editar a config do script e reiniciar ele no console.

## Antes e depois

O script mandava para o Discord:

```lua
Config.Webhook = "https://discord.com/api/webhooks/1234…/aBcD…"
```

Agora manda para o log do FiveDash:

```lua
Config.Webhook = "https://logs.fivex.sh/api/logs/<id-do-log>/<token>"
```

O formato do link é sempre `https://logs.fivex.sh/api/logs/<id-do-log>/<token>`. Copie o link inteiro do painel, sem digitar.

## Trocar o webhook de um script

### Copie o link do log

No painel, abra o log na barra lateral (**Logs →** nome do log), clique em **Como mandar** e copie o link. Se o log estiver no export, clique em **Usar webhook** para ver o link.

### Abra a config do script

Abra a config do script (`config.lua`, `shared.lua`…) e procure por `discord.com/api/webhooks`.

### Troque o link

Troque esse link pelo link do log certo. O resto do script fica igual.

### Reinicie o script

No console do servidor, rode `ensure nome-do-script`.

### Confira

Faça no jogo algo que o script registra, ou clique em **Mandar teste** em **Como mandar**. O log aparece na página do log na hora.

> Um script com vários webhooks (um para cada ação) pode mandar cada link para um log diferente, ou todos para o mesmo log. Os filtros de **Script** e a busca separam depois.

## O que o FiveDash aceita

O link do log responde como um webhook do Discord. Scripts que montam a mensagem com `PerformHttpRequest` funcionam sem mudança.

### Formatos

| Content-Type                        | Como o corpo é lido                                                                                                                                   |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `application/json`                  | O corpo é a mensagem do webhook (`content`, `username`, `embeds`). Até 256 KiB.                                                                       |
| `multipart/form-data`               | O campo `payload_json` (e os campos `content` e `username`, se vierem). Os arquivos anexados são contados, mas não são guardados. Até 4 MiB no total. |
| `application/x-www-form-urlencoded` | Os campos `payload_json`, `content` e `username`.                                                                                                     |

### Campos lidos

| Campo do Discord                       | O que vira no FiveDash                                                                | Limite                           |
| -------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------- |
| `content`                              | O texto do log (só no primeiro embed).                                                | 2.000 caracteres                 |
| `username`                             | O **Script** que mandou (usado no filtro **Script** e em **Scripts** na visão geral). | 80 caracteres                    |
| `embeds`                               | Cada embed vira um log separado.                                                      | 10 embeds                        |
| `embeds[].title`                       | O título do log. Sem título, vale o `author.name` ou a primeira linha do `content`.   | 256                              |
| `embeds[].description`                 | O texto do log.                                                                       | 4.096                            |
| `embeds[].fields`                      | Os valores do log, na ordem (`name`, `value`, `inline`).                              | 25 campos; nome 256, valor 1.024 |
| `embeds[].color`                       | A cor da faixa do log.                                                                | —                                |
| `embeds[].author.name`                 | Autor do embed.                                                                       | 256                              |
| `embeds[].footer.text`                 | Rodapé do embed.                                                                      | 2.048                            |
| `embeds[].url`                         | Link do embed.                                                                        | —                                |
| `embeds[].image.url` / `thumbnail.url` | Imagem e miniatura do log.                                                            | —                                |
| `embeds[].timestamp`                   | **Hora no embed**, mostrada no log.                                                   | —                                |

Outros campos (como `avatar_url`, `tts` e componentes) são ignorados.

### O que o FiveDash lê de cada log

Além de guardar a mensagem, o FiveDash procura no texto, nos campos e no rodapé:

| O que                         | Como ele reconhece                                                                                    |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- |
| Passaporte / ID do personagem | Rótulos como `Passaporte`, `user_id`, `citizenid`, `ID`, `Vítima`, `Assassino` seguidos de um número. |
| Conta do Discord              | Menções `<@123…>` e `discord:123…`.                                                                   |
| Identificadores               | `license:`, `license2:`, `steam:`, `fivem:`, `xbl:`, `live:`.                                         |
| Coordenadas                   | `vector3(x, y, z)`, `x: … y: … z: …` ou três números com casas decimais separados por vírgula.        |
| Pares de valores              | Linhas como `**Item:** água`, `Item: água` ou `[ITEM]: água`.                                         |

Esses dados alimentam a busca, o filtro **Jogador** e os **Jogadores mais ativos**.

### Respostas

| Situação                                                 | Resposta                                                                  |
| -------------------------------------------------------- | ------------------------------------------------------------------------- |
| Log aceito                                               | `204 No Content`, como o Discord.                                         |
| Log aceito com `?wait=true` no link                      | `200` com a mensagem criada (`id`, `content`, `embeds`…), como o Discord. |
| `GET` no link                                            | `200` com os dados do webhook, como o Discord.                            |
| Log que não existe ou foi excluído                       | `404` `{"code":10015,"message":"Unknown Webhook"}`                        |
| Token errado (link antigo depois de **Gerar novo link**) | `401` `{"code":50027,"message":"Invalid Webhook Token"}`                  |
| JSON inválido                                            | `400` `{"code":50109,…}`                                                  |
| Mensagem vazia (sem `content`, embeds nem arquivos)      | `400` `{"code":50006,"message":"Cannot send an empty message"}`           |
| Corpo grande demais                                      | `413` `{"code":40005,"message":"Request entity too large"}`               |
| Muitos logs por segundo                                  | `429`, com `Retry-After: 1`                                               |
| Serviço ocupado ou fora                                  | `503`, com `Retry-After: 1`                                               |

## Trocar para o export depois

Se você pode editar o script, o export do FiveDash é mais rápido e já lê o passaporte do jogador. Em **Como mandar**, clique em **Usar export** e depois em **Copiar prompt para IA**: cole numa IA junto com o script e ela troca o `PerformHttpRequest` pela chamada do export. Veja [Recurso FiveM](https://fivedash.fivex.gg/docs/pt/developers/fivem-resource).

## Perguntas frequentes

**O log continua aparecendo no Discord?**
Não. Depois da troca, o script manda só para o FiveDash. Os logs ficam no painel, com busca e filtros.

**Troquei o link e nada chegou. O que conferir?**
Veja se o link foi colado inteiro, se o script foi reiniciado (`ensure nome-do-script`) e se o link não é de antes de um **Gerar novo link**. Em **Logs → Visão geral**, o bloco **Em silêncio** mostra os logs que não receberam nada nas últimas 24 h.

**Tenho links antigos com o endereço do painel. Eles ainda funcionam?**
Sim. Links de log que apontam para o painel continuam aceitos. Para scripts novos, use o link que o painel mostra agora.

**Os prints que o script mandava junto ficam guardados?**
Não. O log registra quantos arquivos vieram, mas não guarda os arquivos. Para guardar prints, use a [CDN](https://fivedash.fivex.gg/docs/pt/cdn/integrations).

## Próximos passos

[Criar logs](https://fivedash.fivex.gg/docs/pt/logs/create-logs)Crie um log para cada tipo de webhook.
[Buscar e filtrar](https://fivedash.fivex.gg/docs/pt/logs/search-and-filter)Ache os logs que os scripts mandaram.
[API de logs](https://fivedash.fivex.gg/docs/pt/developers/logs-api)Os detalhes técnicos para desenvolvedores.
[Integrações da CDN](https://fivedash.fivex.gg/docs/pt/cdn/integrations)Guarde os prints dos scripts com link.
