DiscordAPI
Cliente REST para interagir com a API do Discord
Importação
typescript
import { DiscordAPI } from 'discord-flow';Construtor
typescript
1const discord = new DiscordAPI({2 token: process.env.DISCORD_TOKEN3});Canais
typescript
1// Obter canal2const channel = await discord.getChannel(channelId);3 4// Criar canal5const newChannel = await discord.createChannel(guildId, {6 name: 'novo-canal',7 type: ChannelType.GuildText8});9 10// Editar canal11await discord.editChannel(channelId, {12 name: 'canal-editado'13});14 15// Deletar canal16await discord.deleteChannel(channelId);Mensagens
typescript
1// Enviar mensagem2await discord.sendMessage(channelId, {3 content: 'Hello!',4 embeds: [...]5});6 7// Editar mensagem8await discord.editMessage(channelId, messageId, {9 content: 'Editado!'10});11 12// Deletar mensagem13await discord.deleteMessage(channelId, messageId);14 15// Obter mensagens16const messages = await discord.getMessages(channelId, { limit: 10 });Roles
typescript
1// Obter roles2const roles = await discord.getRoles(guildId);3 4// Criar role5const role = await discord.createRole(guildId, {6 name: 'Membro VIP',7 color: 0x1EBE38,8 permissions: Permissions.SendMessages9});10 11// Adicionar role a membro12await discord.addRole(guildId, userId, roleId);13 14// Remover role de membro15await discord.removeRole(guildId, userId, roleId);Membros
typescript
1// Obter membro2const member = await discord.getMember(guildId, userId);3 4// Obter lista de membros5const members = await discord.getMembers(guildId, { limit: 100 });6 7// Editar membro8await discord.editMember(guildId, userId, {9 nick: 'Novo Apelido'10});11 12// Banir membro13await discord.banMember(guildId, userId, {14 reason: 'Spam'15});16 17// Kickar membro18await discord.kickMember(guildId, userId);Guilds
typescript
1// Obter guild2const guild = await discord.getGuild(guildId);3 4// Obter canais da guild5const channels = await discord.getGuildChannels(guildId);Threads
typescript
1// Criar thread2const thread = await discord.createThread(channelId, {3 name: 'Nova Thread',4 autoArchiveDuration: 14405});6 7// Adicionar membro à thread8await discord.addThreadMember(threadId, userId);Comandos
typescript
1// Registrar comandos globais2await discord.registerCommands(applicationId, [3 { name: 'ping', description: 'Pong!' },4 { name: 'help', description: 'Ajuda' }5]);6 7// Registrar comandos em guild específica8await discord.registerGuildCommands(applicationId, guildId, commands);9 10// Obter informações da aplicação11const app = await discord.getApplicationInfo();Rate Limits
A classe DiscordAPI lida automaticamente com rate limits (429), incluindo a espera correta pelo header Retry-After e backoff exponencial com até 5 tentativas.
Operações em Massa (Bulk)
typescript
1// Deletar mensagens em massa(2-100 mensagens)2await discord.bulkDeleteMessages(channelId, ['msg1', 'msg2', ...]);3 4// Banir usuários em massa(max 200)5await discord.bulkBan(guildId, ['user1', 'user2'], { 6 delete_message_seconds: 3600 // opcional7});8 9// Adicionar múltiplas roles10await discord.bulkAddRoles(guildId, userId, ['role1', 'role2']);11 12// Remover múltiplas roles13await discord.bulkRemoveRoles(guildId, userId, ['role1', 'role2']);Webhooks
typescript
1import { DiscordWebhook } from '@discord-flow/adapter-discord-http';2 3// Inicializar com URL completa ou caminho4const webhook = new DiscordWebhook(process.env.WEBHOOK_URL);5 6// Enviar mensagem7await webhook.send({ 8 content: 'Olá via Webhook!',9 username: 'Bot Customizado',10 avatar_url: 'https://...'11});12 13// Editar mensagem do webhook14await webhook.edit(messageId, { content: 'Atualizado!' });15 16// Deletar mensagem do webhook17await webhook.delete(messageId);