Pular para o conteúdo
Decoding Chat API

Adesivos de guilda

Um adesivo (sticker) é uma imagem que uma guilda armazena para seus membros enviarem com uma mensagem. Ele pertence a exatamente uma guilda. Seu snowflake é único em todas as guildas. Obter metadados do adesivo resolve um adesivo sem que você seja membro da guilda dele.

Toda rota nomeia uma guilda em seu caminho. Uma guilda que possui UNAVAILABLE_FOR_EVERYONE rejeita a requisição com 403 MISSING_ACCESS antes que a operação seja executada. UNAVAILABLE_FOR_EVERYONE_BUT_STAFF faz o mesmo para uma conta sem a flag de equipe (staff) da instância. Em Clonar adesivo de guilda, o bloqueio cobre a guilda de destino e nunca a guilda de origem.

Nomes, descrições, tags e imagens enviadas devem passar pela política de conteúdo da instância. Conteúdo bloqueado retorna 403 CONTENT_BLOCKED.

Uma guilda que não existe retorna 404 UNKNOWN_GUILD. Um solicitante que não é um membro atual de uma guilda existente retorna 403 MISSING_PERMISSIONS, então a existência da guilda é distinguível da adesão à guilda. Modificar adesivo de guilda retorna 404 UNKNOWN_STICKER para uma guilda que não existe.

Não há leitura de um único adesivo no escopo de uma guilda. Listar adesivos de guilda retorna toda a coleção em uma única resposta.

Um objeto de adesivo de guilda descreve um adesivo. Apenas seu nome, descrição e tags podem mudar. Substituir a imagem requer a criação de um novo adesivo.

CampoTipoDescrição
idsnowflakeO ID do adesivo
namestringO nome do adesivo (2-30 caracteres)
description1stringA descrição do adesivo, ou uma string vazia quando não tiver nenhuma
tagsarray[string]Tags do adesivo
animated2booleanSe a imagem armazenada é animada
user?3objeto usuário parcialA conta que enviou o adesivo

1 Nunca nulo na transmissão. Um adesivo sem descrição tem uma string vazia

2 Detectado a partir da imagem enviada na criação e copiado inalterado por Clonar adesivo de guilda

3 Presente apenas em Listar adesivos de guilda, onde é definido para todo solicitante e não requer permissão

Um adesivo é sempre um adesivo de guilda, e animated sozinho descreve seu formato. O objeto não tem tipo de adesivo, tipo de formato ou campo de disponibilidade.

{
"id": "1501314428688998183",
"name": "shipit",
"description": "Ship it",
"tags": ["ship", "deploy"],
"animated": false
}

As tags são um array de strings. Uma requisição de criação ou modificação aceita no máximo 10 entradas. O Decoding Chat apara (trims) cada entrada. O limite de 1 a 30 caracteres se aplica ao valor aparado. As entradas são armazenadas e retornadas na ordem enviada.

O array é opcional em toda requisição que o aceita e tem como padrão um array vazio, portanto, omiti-lo em Modificar adesivo de guilda limpa as tags armazenadas.

O formato de item compartilhado por Criar adesivo de guilda e cada entrada de Criar adesivos de guilda em massa.

CampoTipoDescrição
name1stringO nome do adesivo (2-30 caracteres)
description?2?stringA descrição do adesivo (1-500 caracteres), ou null para nenhuma
tags?array[string]Tags do adesivo, cujo padrão é um array vazio
image3string base64Os dados da imagem, com no máximo 524288 bytes decodificados

1 O valor é aparado antes de aplicar o limite, assim como ocorre para description e cada tag

2 Um valor omitido e null são ambos armazenados como null e retornados como uma string vazia

3 Um prefixo de URL de dados é aceito e tudo até a primeira vírgula é removido antes da aplicação de qualquer limite

A parte codificada restante é limitada a 699052 caracteres, o que codifica uma imagem inteira de 524288 bytes, e um valor mais longo retorna o código de validação BASE64_LENGTH_INVALID no caminho image. Um valor que não seja base64 canônico com o preenchimento correto retorna INVALID_BASE64_FORMAT.

Os bytes decodificados são, no máximo, o valor configurado pelo operador chave de limite sticker_max_size, resolvido em relação ao conjunto completo de funcionalidades da guilda e cujo padrão é 524288. Uma imagem maior é rejeitada no caminho image com IMAGE_SIZE_EXCEEDS_LIMIT, cuja mensagem nomeia o teto resolvido. Uma imagem acima de 524289 bytes excede o limite de 699052 caracteres e retorna BASE64_LENGTH_INVALID, então um valor configurado acima de 524289 nunca se aplica.

Os formatos de upload aceitos são PNG, JPEG, APNG, GIF, WebP, AVIF e SVG. O Decoding Chat retira o formato da imagem decodificada. Um AVIF animado é rejeitado. O Decoding Chat detecta o estado de animação a partir da imagem, portanto, este objeto não tem um campo de animação.

As dimensões de pixel e a duração da animação não são aplicadas. Uma imagem aceita é armazenada com suas dimensões originais. O contrato de ativo de imagem Media Proxy seleciona o tamanho entregue.

{
"name": "shipit",
"description": "Ship it",
"tags": ["ship", "deploy"],
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="
}

Objeto de resposta de criação em massa de adesivos

Seção intitulada “Objeto de resposta de criação em massa de adesivos”

O resultado de uma chamada de Criar adesivos de guilda em massa, dividido entre os itens que foram criados e os itens que foram rejeitados.

CampoTipoDescrição
successarray[objeto adesivo de guilda]Os adesivos que foram criados
failedarray[objeto falha de criação de adesivo]Os itens rejeitados após a validação da requisição no nível superior

Ambos os arrays estão presentes em toda resposta de sucesso. Qualquer um deles pode estar vazio. Um item aparece em exatamente um deles, então o comprimento combinado é igual à contagem de itens enviada.

{
"success": [],
"failed": [{"name": "shipit", "error": "The image is too large."}]
}

Um item rejeitado de uma chamada de criação em massa, nomeado e explicado no texto de exibição.

CampoTipoDescrição
name1stringO nome do adesivo solicitado, repetido do item enviado
error2stringA mensagem de falha renderizada para o item

1 O objeto não tem um índice, portanto dois itens enviados que compartilham um nome não podem ser distinguidos

2 Renderizado no idioma (locale) da conta autenticada, então seu valor muda de acordo com o idioma do solicitante

Não há nenhum código legível por máquina, então um cliente que precisa se ramificar de acordo com o motivo envia aquele item de novo através de Criar adesivo de guilda, que retorna um código de erro.

GET/v1/guilds/{guild_id}/stickersBot

Retorna todo objeto de adesivo de guilda da guilda, cada um com o user. Requer adesão à guilda e nenhuma permissão.

Uma resposta possui a coleção completa. A operação não é paginada. Um adesivo cujo enviador não possa ser resolvido é omitido, então o array pode ser menor do que o número de adesivos armazenados.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda
StatusCorpoCondição
200array[objeto adesivo de guilda]Os adesivos foram retornados
4031resposta de erroA guilda está indisponível ou o solicitante não é um membro
404resposta de erroA guilda não existe e a requisição retorna UNKNOWN_GUILD

1 O código de erro é MISSING_ACCESS para uma guilda indisponível e MISSING_PERMISSIONS para um não membro

60 requisições a cada 10 segundos para cada ID de guilda e usuário autenticado, no bucket guild:sticker:list::guild_id.

POST/v1/guilds/{guild_id}/stickersBotAudit reason

Cria um adesivo a partir dos dados de imagem enviados e retorna o seu objeto de adesivo de guilda sem user. Requer adesão à guilda e CREATE_EXPRESSIONS. Emite um evento de Gateway Atualização de Adesivos de Guilda.

O limite de slots é o valor configurado pelo operador em max_guild_stickers resolvido em relação ao conjunto completo de recursos da guilda, cujo padrão é 500. Uma guilda com UNLIMITED_STICKERS contorna essa configuração e recebe um limite fixo de 999999.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda

O corpo é um objeto de criação de adesivo.

StatusCorpoCondição
200objeto adesivo de guildaO adesivo foi criado
4001resposta de erroA guilda atingiu seu limite de slots para adesivos ou a imagem é inválida
4032resposta de erroA guilda está indisponível, o solicitante não é um membro ou carece de CREATE_EXPRESSIONS, ou o texto/imagem enviado foi bloqueado
404resposta de erroA guilda não existe e a requisição retorna UNKNOWN_GUILD

1 O código de erro é MAX_STICKERS para o limite de slot, com o limite resolvido em suas variáveis de mensagem. Uma falha de imagem é INVALID_FORM_BODY com BASE64_LENGTH_INVALID para uma codificação com tamanho excessivo, IMAGE_SIZE_EXCEEDS_LIMIT para bytes decodificados acima do teto resolvido, ou INVALID_IMAGE_FORMAT para uma imagem indecodificável ou não aceita no caminho image

2 O código de erro é MISSING_ACCESS para uma guilda indisponível, MISSING_PERMISSIONS para uma falha de permissão ou de adesão, e CONTENT_BLOCKED quando o nome, descrição ou uma tag corresponde a uma lista de bloqueio ou a imagem decodificada corresponde ao hash de um arquivo banido

Criar um adesivo consome um slot de adesivo da guilda, emite Atualização de Adesivos de Guilda com a coleção completa e registra uma entrada de auditoria STICKER_CREATE com o motivo fornecido.

10 requisições a cada 30 segundos para cada ID de guilda e usuário autenticado, no bucket guild:sticker:create::guild_id.

POST/v1/guilds/{guild_id}/stickers/bulkBotAudit reason

Tenta criar entre 1 e 50 adesivos em uma única requisição e retorna um objeto resposta de criação em massa de adesivos. Emite um evento de Gateway Atualização de Adesivos de Guilda para o lote inteiro.

O solicitante precisa ser membro da guilda e ter CREATE_EXPRESSIONS. O Decoding Chat processa os itens estritamente na ordem enviada e trata cada um de forma independente. Um item falha quando não restar mais nenhum slot de adesivo na guilda. Um item posterior ainda pode ter sucesso depois que um item anterior tiver falhado por outro motivo.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda
CampoTipoDescrição
stickersarray[objeto criação de adesivo]Os itens a serem criados, na ordem em que são processados (1-50)
StatusCorpoCondição
200objeto resposta de criação em massa de adesivosTodo item validado foi tentado
4001resposta de erroO corpo de nível superior, contagem de itens, formato de item, metadados de item ou limite da imagem codificada são inválidos
4032resposta de erroA guilda está indisponível, o solicitante não é um membro ou carece de CREATE_EXPRESSIONS, ou uma string enviada foi bloqueada
404resposta de erroA guilda não existe e a requisição retorna UNKNOWN_GUILD

1 Uma imagem codificada com tamanho excessivo, um nome fora da faixa ou uma tag fora de seu limite rejeitam toda a requisição antes que qualquer item seja criado

2 O código de erro é MISSING_ACCESS para uma guilda indisponível, MISSING_PERMISSIONS para falha de permissão ou de adesão, e CONTENT_BLOCKED para uma string bloqueada

Uma imagem decodificada que tenha tamanho excessivo, seja indecodificável, esteja em um formato não aceito ou corresponda ao hash de um arquivo banido falha apenas aquele item.

Cada item bem-sucedido consome um slot de adesivo de guilda e registra uma entrada de auditoria STICKER_CREATE com o motivo fornecido.

O Decoding Chat emite um Atualização de Adesivos de Guilda após o lote quando ao menos um item for bem-sucedido, contendo a coleção completa de adesivos da guilda. Um lote no qual nenhum item foi bem-sucedido não emite nada.

6 requisições por minuto para cada ID de guilda e usuário autenticado, no bucket guild:sticker:bulk_create::guild_id.

POST/v1/guilds/{guild_id}/stickers/cloneBotAudit reason

Copia um adesivo existente para a guilda de destino e retorna o novo objeto adesivo de guilda sem user. Emite um evento de Gateway Atualização de Adesivos de Guilda na guilda de destino.

O solicitante precisa ser membro da guilda de destino e ter CREATE_EXPRESSIONS nela. Adesão à guilda de origem não é requerida. A guilda de origem deve ter CLONE_STICKER_ENABLED, a qual uma guilda possui somente depois de se inscrever para tal.

O nome, descrição, tags, estado de animação e imagem são copiados inalterados.

Obter metadados do adesivo informa se uma origem permite a clonagem sem tentar a operação.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda de destino
CampoTipoDescrição
source_sticker_idsnowflakeO ID do adesivo a ser copiado, que pode pertencer a qualquer guilda
StatusCorpoCondição
200objeto adesivo de guildaO adesivo foi clonado
4001resposta de erroA guilda de destino atingiu seu limite de slots de adesivo
4032resposta de erroA guilda de origem está ausente ou não permite clonagem, a guilda de destino está indisponível, ou o solicitante não é um membro da guilda de destino ou carece de CREATE_EXPRESSIONS nela
4043resposta de erroO adesivo de origem ou a guilda de destino não existem

1 O código de erro é MAX_STICKERS

2 O código de erro é MISSING_ACCESS quando a guilda de origem está ausente ou não tem CLONE_STICKER_ENABLED e quando a guilda de destino está indisponível, e MISSING_PERMISSIONS para uma falha de permissão ou adesão no destino

3 O código de erro é UNKNOWN_STICKER para o adesivo de origem e UNKNOWN_GUILD para a guilda de destino

Uma guilda de origem que não existe mais retorna 403 MISSING_ACCESS, logo um solicitante não consegue distingui-la de uma guilda de origem que não permite clonagem.

A cópia consome um slot de adesivo na guilda de destino e nomeia o solicitante como enviador. Emite Atualização de Adesivos de Guilda na guilda de destino e registra uma entrada de auditoria STICKER_CREATE. A origem permanece inalterada.

10 requisições a cada 30 segundos para cada ID de guilda de destino e usuário autenticado, no bucket guild:sticker:clone::guild_id.

PATCH/v1/guilds/{guild_id}/stickers/{sticker_id}BotAudit reason

Substitui os metadados do adesivo e retorna o objeto adesivo de guilda sem user. Emite um evento de Gateway Atualização de Adesivos de Guilda.

  • O enviador pode modificar seu próprio adesivo com CREATE_EXPRESSIONS, e qualquer outro solicitante precisa de MANAGE_EXPRESSIONS.
  • Nenhuma permissão está sujeita ao nível de MFA da guilda.
  • A imagem armazenada não pode ser substituída, logo, uma mudança de imagem requer a criação de um novo adesivo.

Um adesivo que não pertence à guilda no caminho retorna 404 UNKNOWN_STICKER.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda
sticker_idsnowflakeO ID do adesivo
CampoTipoDescrição
namestringO nome do adesivo (2-30 caracteres)
description?1?stringA descrição do adesivo (1-500 caracteres), ou null para limpá-la
tags?2array[string]Tags do adesivo, cujo padrão é um array vazio

1 Um valor omitido e null são ambos armazenados como null e retornados como uma string vazia

2 Um array omitido é escrito como um array vazio

StatusCorpoCondição
200objeto adesivo de guildaOs metadados foram processados
4031resposta de erroA guilda está indisponível, o solicitante não é o enviador com CREATE_EXPRESSIONS nem um membro com MANAGE_EXPRESSIONS, ou o texto enviado foi bloqueado
404resposta de erroO adesivo não existe naquela guilda e a requisição retorna UNKNOWN_STICKER

1 O código de erro é MISSING_ACCESS para uma guilda indisponível, MISSING_PERMISSIONS para uma falha de permissão ou adesão, e CONTENT_BLOCKED para um nome, descrição ou tag bloqueada

Um não membro que nomeia um adesivo existente recebe MISSING_PERMISSIONS.

A operação escreve os metadados fornecidos, emite Atualização de Adesivos de Guilda com a coleção completa de adesivos da guilda e então registra uma entrada de auditoria STICKER_UPDATE. Valores enviados que correspondem aos armazenados ainda emitem o Dispatch e não registram nenhuma entrada de auditoria.

20 requisições a cada 10 segundos para cada ID de guilda e usuário autenticado, no bucket guild:sticker:update::guild_id.

DELETE/v1/guilds/{guild_id}/stickers/{sticker_id}BotAudit reason

Exclui o registro do adesivo e retorna 204 com um corpo vazio. Emite um evento de Gateway Atualização de Adesivos de Guilda.

CampoTipoDescrição
guild_idsnowflakeO ID da guilda
sticker_idsnowflakeO ID do adesivo
CampoTipoDescrição
purge?1booleanSe deve ser excluída permanentemente a imagem armazenada (padrão false)

1 Lido como true apenas quando for exatamente true, True ou 1 após aparar. Todo outro valor, incluindo TRUE e yes, é lido como false

StatusCorpoCondição
204vazioO adesivo foi excluído
4031resposta de erroA guilda está indisponível ou não pode purgar ativos de expressão, ou o solicitante não é o enviador com CREATE_EXPRESSIONS nem um membro com MANAGE_EXPRESSIONS
4042resposta de erroA guilda ou o adesivo não existem

1 O código de erro é MISSING_ACCESS para uma guilda indisponível e quando purge é true e a guilda não tem EXPRESSION_PURGE_ALLOWED, e MISSING_PERMISSIONS para uma falha de permissão ou adesão

2 O código de erro é UNKNOWN_GUILD para a guilda e UNKNOWN_STICKER para o adesivo

A operação remove o adesivo da guilda, devolve seu slot, emite Atualização de Adesivos de Guilda com a coleção restante de adesivos da guilda e, em seguida, grava uma entrada de auditoria STICKER_DELETE.

Com purge, a imagem pode permanecer disponível brevemente após o 204. Mensagens existentes que referenciam o adesivo não são alteradas.

10 requisições a cada 30 segundos para cada ID de guilda e usuário autenticado, no bucket guild:sticker:delete::guild_id. A rota cobra uma segunda franquia de 300 requisições por dia para cada ID de guilda e usuário autenticado, no bucket guild:sticker:delete:daily::guild_id.