{"id":25445495,"url":"https://github.com/0lostconnection/discord-bot-template","last_synced_at":"2026-04-02T02:50:59.126Z","repository":{"id":278009641,"uuid":"932154918","full_name":"0LostConnection/discord-bot-template","owner":"0LostConnection","description":"Este é um template para criar bots do Discord usando a biblioteca discord.js. Ele inclui uma estrutura básica para comandos de barra (slash commands), eventos e configuração de comandos específicos de guilds.","archived":false,"fork":false,"pushed_at":"2025-06-27T17:24:16.000Z","size":50,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-05T04:05:18.399Z","etag":null,"topics":["bot","bun","discord","discord-bot","discord-js","node"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0LostConnection.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-13T13:10:38.000Z","updated_at":"2025-06-27T17:32:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"6725d754-f84d-429c-bb55-a702458248b5","html_url":"https://github.com/0LostConnection/discord-bot-template","commit_stats":null,"previous_names":["0lostconnection/discord-bot-template"],"tags_count":5,"template":true,"template_full_name":null,"purl":"pkg:github/0LostConnection/discord-bot-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0LostConnection%2Fdiscord-bot-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0LostConnection%2Fdiscord-bot-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0LostConnection%2Fdiscord-bot-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0LostConnection%2Fdiscord-bot-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0LostConnection","download_url":"https://codeload.github.com/0LostConnection/discord-bot-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0LostConnection%2Fdiscord-bot-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017784,"owners_count":26086145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","bun","discord","discord-bot","discord-js","node"],"created_at":"2025-02-17T16:23:10.788Z","updated_at":"2025-10-14T03:45:40.698Z","avatar_url":"https://github.com/0LostConnection.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discord Bot Template\n\nEste é um template para criar bots do Discord usando a biblioteca `discord.js`. Ele inclui uma estrutura básica para comandos de barra (slash commands), eventos e configuração de comandos específicos de guilds.\n\n## Requisitos\n\n- Bun ou Node.js\n\n## Instalação\n\n1. Clone este repositório:\n\n   ```bash\n   git clone https://github.com/0LostConnection/discord-bot-template.git\n   cd discord-bot-template\n   ```\n\n2. Instale as dependências:\n\n   ```bash\n   bun install\n   ```\n\n3. Crie um arquivo `.env` na raiz do projeto e adicione as seguintes variáveis de ambiente:\n\n   ```env\n   # Bot\n   CLIENT_TOKEN=seu_token_do_discord\n   CLIENT_ID=seu_id_do_cliente\n\n   # Comandos\n   DEBUG_GUILD_ID=id_da_guild_de_debug\n   ```\n\n## Estrutura do Projeto\n\n```plaintext\ndiscord-bot-template/\n├── src/\n│   ├── commands/\n│   │   ├── debug/\n│   │   │   └── teste/\n│   │   │       └── pong.js\n│   │   ├── guild/\n│   │   │   └── info/\n│   │   │       └── userInfo.js\n│   │   ├── global/\n│   │   │   └── teste/\n│   │   │       └── ping.js\n│   ├── core/\n│   │   ├── Command.js\n│   │   ├── DiscordClient.js\n│   │   └── Event.js\n│   ├── events/\n│   │   ├── InteractionCreateEvent.js\n│   │   └── ReadyEvent.js\n│   └── index.js\n├── .env\n├── clearCommands.js\n├── package.json\n└── README.md\n```\n\n## Uso\n\n### Comandos\n\nOs comandos são definidos na pasta `src/commands`. Cada comando é uma classe que estende a classe base `Command`. Os comandos são organizados em três categorias: `debug`, `guild` e `global`.\n\n#### Categorias de Comandos\n\n- **Debug**: Comandos que são registrados apenas na guild de debug especificada no arquivo `.env` (`DEBUG_GUILD_ID`). Esses comandos são úteis para testes e desenvolvimento.\n- **Guild**: Comandos que são registrados em guilds específicas definidas para cada comando. Esses comandos são úteis para funcionalidades específicas de determinadas guilds.\n- **Global**: Comandos que são registrados globalmente e estão disponíveis em todas as guilds onde o bot está presente.\n\n#### Configuração de Guilds para Comandos\n\nCada comando pode especificar em quais guilds deve ser registrado usando o método `setGuildId()`:\n\n```js\n// Registrar em uma única guild\nthis.setGuildId(\"123456789012345678\");\n\n// Registrar em múltiplas guilds\nthis.setGuildId([\"123456789012345678\", \"987654321098765432\"]);\n```\n\nSe você não chamar o método `setGuildId()`, o comando será registrado globalmente.\n\n#### Exemplo de Comando `ping` (global)\n\n```js\nimport { CommandInteraction } from \"discord.js\";\nimport { Command } from \"../../../core/Command\";\n\n/**\n * Comando que responde com \"Pong!\".\n * @extends {Command}\n */\nexport default class PingCommand extends Command {\n    /**\n     * Cria uma nova instância do comando Ping.\n     */\n    constructor() {\n        super();\n        this.setName(\"ping\");\n        this.setDescription('Responde com \"Pong!\"');\n        // Não chamar setGuildId() faz com que o comando seja global\n        this.setDisabled(false);  // Define que o comando está habilitado, por padrão é false, então é obselto deixa-lo no código.\n    }\n\n    /**\n     * Executa o comando Ping.\n     * @param {DiscordClient} client - A instância do cliente customizado do Discord.\n     * @param {CommandInteraction} interaction - A interação que acionou o comando.\n     */\n    execute(client, interaction) {\n        interaction.reply(\"Pong!\");\n    }\n}\n```\n\n#### Exemplo de Comando `pong` (debug)\n\n```js\nimport { CommandInteraction } from \"discord.js\";\nimport { Command } from \"../../../core/Command\";\n\n/**\n * Comando que responde com \"Ping!\".\n * @extends {Command}\n */\nexport default class PongCommand extends Command {\n    /**\n     * Cria uma nova instância do comando Pong.\n     */\n    constructor() {\n        super();\n        this.setName(\"pong\");\n        this.setDescription('Responde com \"Ping!\"');\n        this.setDebug(true);      // Define que o comando é para debug e será registrado na guild de Debug\n        this.setDisabled(false);\n    }\n\n    /**\n     * Executa o comando Pong.\n     * @param {DiscordClient} client - A instância do cliente customizado do Discord.\n     * @param {CommandInteraction} interaction - A interação que acionou o comando.\n     */\n    execute(client, interaction) {\n        interaction.reply(\"Ping!\");\n    }\n}\n```\n\n#### Exemplo de Comando para Múltiplas Guilds\n\n```js\nimport { CommandInteraction } from \"discord.js\";\nimport { Command } from \"../../../core/Command\";\n\n/**\n * Comando que responde com informações da guild.\n * @extends {Command}\n */\nexport default class GuildInfoCommand extends Command {\n    /**\n     * Cria uma nova instância do comando GuildInfo.\n     */\n    constructor() {\n        super();\n        this.setName(\"guildinfo\");\n        this.setDescription(\"Mostra informações sobre a guild atual\");\n        // Registra o comando em múltiplas guilds específicas\n        this.setGuildId([\"123456789012345678\", \"987654321098765432\"]);\n        this.setDisabled(false);\n    }\n\n    /**\n     * Executa o comando GuildInfo.\n     * @param {DiscordClient} client - A instância do cliente customizado do Discord.\n     * @param {CommandInteraction} interaction - A interação que acionou o comando.\n     */\n    execute(client, interaction) {\n        const guild = interaction.guild;\n        interaction.reply(`Nome da Guild: ${guild.name}\\nTotal de membros: ${guild.memberCount}`);\n    }\n}\n```\n\n### Eventos\n\nOs eventos são definidos na pasta `src/events`. Cada evento é uma classe que estende a classe base `Event`. O nome do evento é definido no construtor da classe, passando o nome do evento para o super construtor da classe `Event`.\n\n#### Exemplo de Evento `ready`\n\n```js\nimport { Event } from \"../core/Event\";\nimport { DiscordClient } from \"../core/DiscordClient\";\n\n/**\n * Evento que é acionado quando o bot está pronto.\n * @extends {Event}\n */\nexport default class ReadyEvent extends Event {\n    /**\n     * Cria uma nova instância do evento ReadyEvent.\n     */\n    constructor() {\n        super(\"ready\");\n    }\n\n    /**\n     * Executa o evento quando o bot está pronto.\n     * @param {DiscordClient} client - A instância do cliente customizado do Discord.\n     * @returns {Promise\u003cvoid\u003e}\n     */\n    async execute(client) {\n        await client.registerSlashCommands();\n        console.log(`${client.user?.tag} is ready!`);\n    }\n}\n```\n\n### Definindo o Nome do Evento\n\nPara definir o nome do evento, passe o nome do evento como uma string para o super construtor da classe `Event` no construtor da sua classe de evento. Por exemplo, para definir o nome do evento como `ready`, use `super(\"ready\")` no construtor da sua classe de evento.\n\n## Executando o Bot\n\nPara iniciar o bot, use o seguinte comando:\n\n```bash\nbun start\n```\n\n## Ferramentas Utilitárias\n\n### Limpeza de Comandos\n\nO template inclui uma ferramenta para limpar comandos que estão registrados no Discord. Isso é particularmente útil quando:\n\n- Você remove um comando do seu código, mas ele ainda aparece no Discord\n- Um comando não está mais configurado para uma guild específica, mas continua disponível nela\n- Você deseja reiniciar todos os comandos do seu bot\n\n#### Como Usar\n\nPara limpar comandos globais:\n\n```bash\nbun clearCommands.js global\n```\n\nPara limpar comandos de uma guild específica:\n\n```bash\nbun clearCommands.js guild \u003cGUILD_ID\u003e\n```\n\nSubstitua `\u003cGUILD_ID\u003e` pelo ID da guild da qual você deseja remover todos os comandos.\n\n#### Situações de Uso\n\n- **Desenvolvimento**: Durante o desenvolvimento, você pode querer limpar comandos para testar novas versões\n- **Migração**: Ao migrar comandos de uma guild para global ou vice-versa\n- **Manutenção**: Para remover comandos obsoletos que já foram removidos do código mas ainda aparecem para os usuários\n- **Resolução de Problemas**: Quando há discrepância entre os comandos disponíveis e os implementados no código\n\n## Contribuição\n\nContribuições são bem-vindas! Sinta-se à vontade para abrir uma issue ou enviar um pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0lostconnection%2Fdiscord-bot-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0lostconnection%2Fdiscord-bot-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0lostconnection%2Fdiscord-bot-template/lists"}