{"id":21000418,"url":"https://github.com/infinitemarcus/monika-bot","last_synced_at":"2026-05-08T14:13:58.699Z","repository":{"id":111942387,"uuid":"305573253","full_name":"InfiniteMarcus/Monika-Bot","owner":"InfiniteMarcus","description":"Bot de propósito geral para Discord utilizando discord.js e baseado na personagem Monika de DDLC","archived":false,"fork":false,"pushed_at":"2022-07-15T19:26:01.000Z","size":226,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-20T19:20:43.472Z","etag":null,"topics":["discordjs","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InfiniteMarcus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-10-20T02:56:21.000Z","updated_at":"2022-07-15T15:07:54.000Z","dependencies_parsed_at":"2023-03-12T09:21:48.328Z","dependency_job_id":null,"html_url":"https://github.com/InfiniteMarcus/Monika-Bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/InfiniteMarcus/Monika-Bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FMonika-Bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FMonika-Bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FMonika-Bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FMonika-Bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InfiniteMarcus","download_url":"https://codeload.github.com/InfiniteMarcus/Monika-Bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FMonika-Bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32783660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["discordjs","nodejs"],"created_at":"2024-11-19T08:10:26.876Z","updated_at":"2026-05-08T14:13:58.660Z","avatar_url":"https://github.com/InfiniteMarcus.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Monika Bot\n\n\u003ch2 align=\"center\"\u003e\n  🛑 \u003cstrong\u003eAVISO! Repositório descontinuado!\u003c/strong\u003e 🛑\n\u003c/h2\u003e\n\nO **Projeto Monika** foi reformulado para **Projeto Hanna**. Por consequência, este repositório se tornou obsoleto e não será mais atualizado no futuro. É possível acompanhar mais novidades via [Twitter da Hanna](https://twitter.com/ProjectHanna).\n\nEntretanto, esta ainda é uma boa base para diversos sistemas e comandos para bots de Discord, e uma boa porcentagem disso foi reaproveitada para a Hanna.\n\nÉ importante frisar que o código aqui escrito pode estar defasado e desatualizado, dado que:\n- Atualizações com mudanças importantes na API do Discord e no wrapper discord.js podem (e devem) ter acontecido\n- Quando eu criei este repositório, eu ainda estava aprendendo Node.js e conceitos sobre estruturação e engenharia de software\n\n## Conceito\nO projeto **Monika bot** se baseou na criação de um bot de propósito geral para a plataforma Discord, utilizando-se de do módulo [discord.js](https://github.com/discordjs/discord.js), em Node.js, para acessar a API da mesma e fornecer diversos comandos úteis para os usuários.\n\nOs principais intuitos deste programa eram:\n* Aumentar o engajamento de usuários em servidores do Discord\n* Facilitar a interação entre usuários e/ou bots\n* Automatizar o uso de ferramentas já disponíveis em outros meios computacionais\n* Desenvolver novas funcionalidades úteis em geral\n\nAlém disso, a persona do bot era uma referência direta a personagem Monika, do jogo [Doki Doki Literature Club!](https://ddlc.moe/) (2017). O autor do projeto seguiu todos os direcionamentos e recomendações presentes no site da desenvolvedora do jogo, a [Team Salvato](http://teamsalvato.com/), sobre o uso de seus personagens em outras mídias e/ou formatos, bem como entrou em contato com a mesma para esclarecer eventuais dúvidas sobre o mesmo tema. Mais informações podem ser encontradas [aqui](http://teamsalvato.com/ip-guidelines/) (último acesso em: 07/12/2020).\n\nO autor deste projeto deixa claro que não possui quaisquer direitos oficiais sobre a personagem Monika e/ou o jogo DDLC. O uso de quaisquer informações, imagens, referências ou detalhes deles neste software se baseiam apenas no desejo de contribuir com a comunidade de fãs deste jogo, não desejando prejudicar a empresa detentora dos direitos legais, Team Salvato. O autor sempre estará aberto para conversar e resolver quaisquer possíveis conflitos existentes no uso destas propriedades intelectuais com a respectiva desenvolvedora.\n\nÉ possível jogar Doki Doki Literature Club! de graça oficialmente por [aqui](https://ddlc.moe/).\n\n## Funcionalidades\n\nDentre as funcionalidades implementadas, a Monika pode:\n* Cumprimentar usuários, enviar abraços, escrever mensagens e realizar outras interações\n* Entrar e sair de canais de voz\n* Mostrar uma lista completa de comandos (e fornecer mais detalhes sobre cada um eles)\n* Mostrar a previsão do tempo para um determinado lugar\n* Enviar gifs de uma seleção aleatória\n* Realizar um ping TCP em um endereço na Web (e em uma determinada porta, se especificado)\n* Rolar dados de diversos lados\n* Tocar músicas a partir de links do Youtube\n* Deletar pessoas e trazê-las de volta (referência ao jogo DDLC 😉 )\n* Entre outras\n\n## Recursos utilizados\n\nPara o desenvolvimento deste projeto, o recurso utilizado mais importante foi o ambiente de execução [Node.js](https://nodejs.org/en/), que possibilita o uso da linguagem Javascript para aplicações servidoras. No entanto, o gerenciador de pacotes [npm](https://www.npmjs.com/) também foi de suma importância, possibilitando a instalação de pacotes fundamentais para a implementação dos comandos propostos.\n\nA lista de dependências de pacotes npm pode ser encontrada no arquivo `package.json` neste repositório.\n\nOutros recursos valiosos para o desenvolvimento deste projeto foram o tutorial disponível em [Discord.js Guide](https://discordjs.guide/), para melhor compreensão de como começar a construir bots para a plataforma Discord, e a documentação disponível em [discord.js.org](https://discord.js.org/#/docs/main/stable/general/welcome), para consultar mais informações sobre o módulo discord.js.\n\nAlgumas funcionalidades utilizam acesso a banco de dados para armazenar, registrar e consultar alguns dados dos usuários dos servidores aos quais o bot servirá. A tecnologia usada para tal fim foi o PostgreSQL, a partir do pacote `pg`, presente na lista de dependências. As credênciais de acesso ao banco se encontram no arquivo `database.js`, no diretório `functions`, a partir de variáveis de ambiente do Node (`process.env`).\n\nTambém é importante observar que o comando de previsão do tempo necessita de um token para a [API](https://openweathermap.org/api) do site [OpenWeather](https://openweathermap.org/). Isto pode ser adicionado ao modificar a o texto `MYAPIID` no arquivo `weather.js` no diretório `commands/utils`.\n  \n## Passo a passo\n\nPara o desenvolvimento deste projeto, foram realizados os seguintes passos:\n\n* Uma versão inicial do programa foi criada seguindo o passo a passo detalhado no guia [Discord.js Guide](https://discordjs.guide/)\n* O primeiro comando, de envio de arquivos gif, foi criado, buscando-se compreender o funcionamento da API do Discord\n* Demais comandos básicos foram sendo construidos, como os de ajuda e cumprimento de usuários\n* Refatorou-se o arquivo principal `index.js`, de maneira a colocar cada função do bot em um módulo JavaScript separado\n* A conexão com banco de dados foi criada, armazenando dados sobre as interações dos usuários do servidor do HackoonSpace\n* O sistema de níveis e pontos de experiência foi implementado, visando a existência de comandos exclusivos para determinados níveis\n* Comandos mais complexos, como de conexão com a API de previsão do tempo e de deletar usuários foram sendo implementados, usando recursos mais avançados do Node.Js\n* Uma microeconomia, baseada em moedas ficticias (HackoonCoins) foi criada, possibilitando que alguns comandos só pudessem ser utilizados se o usuário consumisse algumas dessas moedas\n* Alguns tratamentos mais avançados para [Promises](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise) e comportamentos assíncronos foram adicionados\n\n## Instalação\n\n### 1º Passo: \nBaixe e instale o Node.js, preferencialmente na mesma versão apresentada no arquivo `package.json`. Se tudo der certo, o gerenciador de pacotes npm será instalado automaticamente junto com o Node\n  \n### 2º Passo: \nClone/copie os arquivos deste repositório em um diretório na sua máquina\n  \n### 3º Passo:\nExecute o comando `npm install` para instalar todas as dependências presentes em `package.json`\n  \n### 4º Passo:\nPreencha todos os campos necessários no arquivo `config.json`\n  \n### 5º Passo:\nPreencha os demais campos com tokens e chaves de configuração do projeto:\n  * `process.env.BOT_TOKEN`, em `index.js`, para autenticar o bot na API do Discord\n  * `process.env.ROLE` e `process.env.WELCOME_CHANNEL`, em `index.js`, para configurar qual cargo padrão novos usuários irão receber e qual mensagem de boas-vindas deverá aparecer\n  * (OPCIONAL) `process.env.process.env.BOTS_ONLY_CHANNEL`, em `index.js`, caso o bot necessite responder apenas em um único canal exclusivo\n  * os campos de acesso ao banco de dados, em `functions/database.js`, para usufruir do sistema de níveis e moedas\n  * o campo MYAPIID, na chamada da API Open Weather, em `commands/utils/weather.js`, para o comando de previsão do tempo\n\n### 6º Passo:\nCrie as tabelas necessárias no mesmo banco de dados PostgreSQL das credenciais fornecidas na etapa anterior\n  \nOs códigos SQL necessários para a criação das tabelas do banco de dados se encontram no arquivo `database.sql`\n\n## Execução\n\n  ```\n  Execute os comandos `npm start` ou `node .` para hospedar o bot na sua máquina\n  ```\n  \nSe tudo der certo, a mensagem \"Estou na sua realidade!\" deve aparecer no seu terminal.\n\n## Bugs/problemas conhecidos\n\nOs problemas mais notórios a serem resolvidos neste projeto foram:\n* O comando `-myinfo` possui alguns problemas de visualização em dispositivos móveis;\n* O comando `-help`, a medida em que novas funcionalidades estão sendo implementadas, retorna uma lista extensa de comandos, não sendo muito amigável para ler;\n* A busca por localidades com o comando `-weather` pode, em algumas situações, não funcionar. Isto ocorre por problemas envolvendo acentos e traduções de nomes de países, cidades e demais lugares, dado que a API que fornece os dados de previsão do tempo foi feita originalmente em inglês;\n* Instalação e configuração do projeto possui alta complexidade. Diversos dados necessitam ser reorganizados para simplificar este processo\n\n## Autores\n\n* Marcus Vinícius N. Garcia ([Infinitemarcus](https://github.com/Infinitemarcus))\n\n## Demais anotações e referências\n\nSeguem algumas últimas informações e observações sobre o projeto:\n* O autor do projeto, como qualquer outra pessoa, não é perfeito. O projeto sempre está aberto para sugestões, recomendações, alterações, correções e afins. Então sinta-se livre para entrar em contato direto ou utilizar as próprias ferramentas do GitHub para tal\n\n## Imagens/screenshots\n\n![Execução do comando hello](https://github.com/Infinitemarcus/Monika-bot/blob/main/images/hello.png)\n\n![Execução do comando help](https://github.com/Infinitemarcus/Monika-bot/blob/main/images/help.png)\n\n![Execução do comando help, com outro comando como argumento](https://github.com/Infinitemarcus/Monika-bot/blob/main/images/help%20myinfo.png)\n\n![Execução do comando myinfo](https://github.com/Infinitemarcus/Monika-bot/blob/main/images/myinfo.png)\n\n![Execução do comando weather](https://github.com/Infinitemarcus/Monika-bot/blob/main/images/weather.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinitemarcus%2Fmonika-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfinitemarcus%2Fmonika-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinitemarcus%2Fmonika-bot/lists"}