SDKs e exemplos

@nex/bot-sdk, @nex/voice-client e o bot de exemplo.

O NEX tem dois pacotes Node.js para desenvolvedores. Eles ainda não estão publicados no npm: estão no repositório do NEX e são instalados por caminho local.

Nota
Não há (ainda) um cliente REST/Gateway completo: use fetch e socket.io-client como nos exemplos destas docs.

@nex/bot-sdk

Builders encadeáveis que geram exatamente o JSON aceito pela API para mensagens ricas e modais.

package.json
"dependencies": {
  "@nex/bot-sdk": "file:../bot-sdk"
}
ExportaPara
EmbedBuilderEmbeds
ButtonBuilder, ActionRowBuilderBotões e linhas
StringSelectMenuBuilder, UserSelectMenuBuilder, RoleSelectMenuBuilder, ChannelSelectMenuBuilderMenus de seleção
ContainerBuilder, SectionBuilder, TextDisplayBuilder, ThumbnailBuilder, MediaGalleryBuilder, FileBuilder, SeparatorBuilderComponents V2
ModalBuilderModais
ButtonStyle, MessageFlags, TextInputStyle, ComponentType, InteractionResponseType, InteractionKindConstantes
const { EmbedBuilder } = require('@nex/bot-sdk');

const embed = new EmbedBuilder()
  .setTitle('Status do servidor')
  .setDescription('Tudo **normal**.')
  .setColor(0x57f287)
  .addField('Uptime', '99,9%', true)
  .toJSON();

await fetch(`${API}/bot/servers/${serverId}/channels/${channelId}/messages`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${TOKEN}` },
  body: JSON.stringify({ embeds: [embed] }),
});

@nex/voice-client

Cliente de voz: faz a sinalização pelo Gateway e transmite áudio de arquivos ou URLs (usa werift e precisa do ffmpeg instalado). Requer o intent voice.connect.

Tocar um áudio
const { VoiceClient } = require('@nex/voice-client');

const voice = new VoiceClient({ token: process.env.NEX_TOKEN });
await voice.connect();

await voice.joinChannel(serverId, channelId);
await voice.play(serverId, './musica.mp3');

voice.on('session_ended', (info) => console.log('saiu da call:', info));
// mais tarde
await voice.leaveChannel(serverId);

Eventos: connected, disconnected, reconnecting, reconnect_failed, participants_update, permission_changed, session_ended, track_ended e negotiation_failed.

negotiation_failed chega com { serverId, channelId, peerId, stage, error, remoteSdp, willRetry } quando a conexão de voz com um participante específico falha. O SDK já fecha a conexão inválida e tenta de novo sozinho quando é o lado que oferta. O bot continua no canal e no Gateway, e os outros participantes não são afetados.

Bot de exemplo

Em examples/ping-bot/ no repositório: responde !ping, registra slash commands e demonstra embeds, painel de música com botões, menu de seleção, modal e Components V2 (/status, /nowplaying, /loopmenu, /feedback, /showcase), além de tocar música em voz com /play.