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.
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.
"dependencies": {
"@nex/bot-sdk": "file:../bot-sdk"
}| Exporta | Para |
|---|---|
EmbedBuilder | Embeds |
ButtonBuilder, ActionRowBuilder | Botões e linhas |
StringSelectMenuBuilder, UserSelectMenuBuilder, RoleSelectMenuBuilder, ChannelSelectMenuBuilder | Menus de seleção |
ContainerBuilder, SectionBuilder, TextDisplayBuilder, ThumbnailBuilder, MediaGalleryBuilder, FileBuilder, SeparatorBuilder | Components V2 |
ModalBuilder | Modais |
ButtonStyle, MessageFlags, TextInputStyle, ComponentType, InteractionResponseType, InteractionKind | Constantes |
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.
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.