Documentação/Base do Core
BASE DO CORE / EVENTOS

Eventos

Reaja ao ciclo de vida do Discord com módulos pequenos, tipos do Discord.js e contexto de guild preservado.

Client.onClient.onceEvents

Eventos contínuos e únicos#

Use Client.on() para todas as emissões e Client.once() quando o handler deve rodar uma única vez.

TSDiscord/Events/Ready.ts
import { ActivityType, Events } from '@ninenity/core'import Client from '../../Shared/Settings/Client'Client.once(Events.ClientReady, {  execute: async readyClient => {    readyClient.user.setPresence({      activities: [        { name: 'Ninenity', type: ActivityType.Watching }      ],      status: 'online'    })    console.log('[Ready] ' + readyClient.user.tag + ' online')  }})
TSDiscord/Events/MessageCreate.ts
import { Events, type Message } from '@ninenity/core'import Client from '../../Shared/Settings/Client'Client.on(Events.MessageCreate, {  execute: async (message: Message) => {    if (message.author.bot) return    if (message.content.trim().toLowerCase() !== 'hello') return    await message.reply('Olá, ' + message.author.username + '!')  }})

Entrada de membros#

O evento recebe os objetos nativos e pode usar recursos configurados para a guild atual.

TSDiscord/Events/MemberJoin.ts
import { Events, type GuildMember } from '@ninenity/core'import Client from '../../Shared/Settings/Client'Client.on(Events.GuildMemberAdd, {  execute: async (member: GuildMember) => {    const channels = Client.getAppChannels()    const welcome = channels.welcome ?? member.guild.systemChannel    if (!welcome?.isTextBased()) return    await welcome.send(      'Boas-vindas, ' + member.toString() + '! Leia as regras para começar.'    )  }})

Erros e avisos do Discord#

Centralize mensagens técnicas sem esconder o contexto da origem.

TSDiscord/Events/Process.ts
import { Events } from '@ninenity/core'import Client from '../../Shared/Settings/Client'Client.on(Events.Warn, {  execute: async (message: string) => {    console.log('[Discord:warn] ' + message)  }})Client.on(Events.Error, {  execute: async (error: Error) => {    console.log('[Discord:error] ' + error.message)  }})

Use console.log() para os logs da aplicação. Se quiser cor no terminal, aplique Color() somente ao texto; não introduza uma segunda abstração de logger no código do bot.

Boas práticas#

  • Retorne cedo para ignorar bots, DMs ou eventos que não interessam.
  • Não faça tarefas longas em série dentro de eventos muito frequentes como MessageCreate.
  • Extraia regras de negócio para Utils ou serviços e mantenha o handler como orquestrador.
  • Capture falhas esperadas de rede ao enviar mensagens; uma permissão removida não deve derrubar o processo.
  • Use um arquivo por evento ou por responsabilidade claramente relacionada.