{"id":22169722,"url":"https://github.com/amadeusdelfino/telegram-bot","last_synced_at":"2025-07-12T15:11:57.658Z","repository":{"id":110666918,"uuid":"291821237","full_name":"AmadeusDelfino/telegram-bot","owner":"AmadeusDelfino","description":"Esqueleto para aplicações bot para o Telegram","archived":false,"fork":false,"pushed_at":"2020-09-30T16:45:04.000Z","size":161,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T17:25:19.627Z","etag":null,"topics":["bot","chat-bot","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/AmadeusDelfino.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}},"created_at":"2020-08-31T20:47:19.000Z","updated_at":"2020-09-30T16:45:06.000Z","dependencies_parsed_at":"2023-05-09T14:46:25.605Z","dependency_job_id":null,"html_url":"https://github.com/AmadeusDelfino/telegram-bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AmadeusDelfino/telegram-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmadeusDelfino%2Ftelegram-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmadeusDelfino%2Ftelegram-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmadeusDelfino%2Ftelegram-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmadeusDelfino%2Ftelegram-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AmadeusDelfino","download_url":"https://codeload.github.com/AmadeusDelfino/telegram-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmadeusDelfino%2Ftelegram-bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265009249,"owners_count":23697157,"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","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","chat-bot","telegram","telegram-bot"],"created_at":"2024-12-02T06:34:33.047Z","updated_at":"2025-07-12T15:11:57.634Z","avatar_url":"https://github.com/AmadeusDelfino.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Telegram Bot\n\nO objetivo deste projetp é fornecer uma interface simples e objetiva para a utilização de bots no Telegram\n\n## Utilização\n\n1) Primeiro, é necessári instalar todas as dependências do projeto: `npm install`\n2) Agora, renomeie o arquivo `.env.example` para `.env` e preencha a chave `TELEGRAM_KEY` com sua chave do Telegram\n3) Agora, é só começar a utilizar! =)\n\n### Implementação de ações\n\nO Telegram Bot se baseia em ações que são executadas assim que comandos são fornecidos. A criação de novos comandos se \nbaseia em duas etapas:\n1) Criação do controller que vai lidar com as ações (opcional)\n2) Arquivo que contem a lista das ações\n\nO arquivo de rotas deve ser colocado no path definido como o caminho das rotas, por padrão é `/src/routes`. O \nTelegram Bot carrega automaticamente todas as rotas definidas nessa pasta. A estrutura padrão para definir uma rota é \ncriar um objeto contendo as chaves `name`, `description` e `action`. Exemplo:\n```\nconst controller = require('./../actions/IndexController')\n\nmodule.exports = [\n    {\n        name: 'ping',\n        description: 'Apenas um pong',\n        action: controller.ping,\n    },\n    {\n        name: 'help',\n        description: 'Lista todos os comandos disponíveis'\n        action: controller.help,\n    }\n]\n```\nPor padrão, todos os métodos que serão executados devem receber como parâmetro a mensagem enviada pelo bot. Para saber\ntudo que é possível fazer com a mensagem, veja esse repositório: \n[https://github.com/yagop/node-telegram-bot-api](https://github.com/yagop/node-telegram-bot-api)\n\n### Implementação de flow de respostas do usuário\nSe tratando de um chat-bot, um dos fluxos ideias é o bot fazer perguntas para o usuário, que por sua vez consegue \nresponder para o bot que mantem o estado daquele fluxo de respostas. Para fazer isso, precisamos fazer algumas pequenas \nalterações nas actions já criadas. Primeiro, o objeto de rota deve conter a propriedade `flow`, que recebe um array de \nfunções que serão executadas em sequência, além disso, a resposta das actions que contem flow de resposta também é um \npouco diferente, ao invés de se retornar a string, é necessário enviar um objeto contendo as propriedades \n`response` e `data`, onde a propriedade `response` é a informação retornada ao usuário, e a propriedade `data` será \nrepassada para a próxima função do flow de perguntas/respostas. Exemplo: \n```\nimport {Message} from \"node-telegram-bot-api\";\n\nexport default [\n    {\n        name: 'test',\n        action: (msg: Message) =\u003e {\n            return {\n                response: 'Test initial',\n                data: {\n                    step: 0\n                }\n            }\n        },\n        description: 'Flow test',\n        flow: [\n            (msg: Message, data: any) =\u003e {data.step++; return {data: data, response: 'step ' + data.step}},\n            (msg: Message, data: any) =\u003e {data.step++; return {data: data, response: 'step ' + data.step}},\n            (msg: Message, data: any) =\u003e {data.step++; return {data: data, response: 'step ' + data.step}},\n        ]\n    }\n]\n```\nNesse exemplo em especial, no chat do usuário o bot vai enviar as seguintes mensagens: `step 1`, `step 2` e `step 3`. \nIndependente da mensagem que o usuário enviar como resposta no flow. A recomendação máxima dessa funcionalidade é você\ndeixar para executar qualquer operação de banco ou API na última função do flow, assim você garante que não haverá \nnenhum erro no meio do flow que vai ser necessário um rollback de qualquer operação feita\n\n## Todo\n- [x] Criar workflow de respostas\n- [ ] Permitir fazer match de rotas/actions via regex\n- [x] Permitir fazer indicações de rotas por similaridade quando não houver nenhum candidato objetivo\n- [ ] Criar sistema de log de erros da aplicação\n- [ ] Habilitar webhook \n- [ ] Escalonamento horizontal\n- [ ] Adicionar mais testes de unidade\n- [ ] Criar um \"bot sandbox\" para testes de integração\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famadeusdelfino%2Ftelegram-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famadeusdelfino%2Ftelegram-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famadeusdelfino%2Ftelegram-bot/lists"}