├── README.md ├── _config.yml ├── articles ├── README.md └── meu-primeiro-bot.md └── brainstorm.md /README.md: -------------------------------------------------------------------------------- 1 | # BrBotDevs Papers 2 | Todos os documentos e "papéis" ficarão armazenados aqui. 3 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /articles/README.md: -------------------------------------------------------------------------------- 1 | ## Repositório de artidos do grupo 2 | Aqui ficam os artigos produzidos pela comunidade. Respeitando o espírito do Open Source, todos os artigos publicados aqui são abertos a quem tiver interesse; 3 | 4 | **Sinta-se à vontade para colaborar escrevendo um novo artigo ou sugerindo edições a artigos já existentes** 5 | -------------------------------------------------------------------------------- /articles/meu-primeiro-bot.md: -------------------------------------------------------------------------------- 1 | # Criando seu primeiro Bot para o Telegram 2 | 3 | Os BOTS de chats hoje ja são uma realidade, eles ja estão presente nos aplicativos de mensagens do seu celular, e com certeza voce ja ficou curioso em como alguns deles são desenvolvidos. Nesse artigo vamos mostrar o desenvolvimento de um BOT muito simples utilizando a API do Telegram. 4 | 5 | ## Criando o seu BOT 6 | 7 | Para esse simples exemplo sera utilizado o JavaScript na plataforma NodeJS em conjunto com a API do Telegram, caso voce nao esteja familiarizado com essa plataforma, voce pode conferir esse otimo artigo aqui do Tableless [Como instalar Node.js no Linux corretamente](https://tableless.com.br/como-instalar-node-js-no-linux-corretamente-ubuntu-debian-elementary-os/) 8 | 9 | Para fazer a instalação da API do Telegram execute o seguinte comando no terminal/prompt de comando: 10 | 11 | ``` 12 | npm install node-telegram-bot-api --save 13 | ``` 14 | 15 | Depois vamos incluir o mesmo em nosso index.js da seguinte forma: 16 | 17 | ```js 18 | const TelegramBot = require( `node-telegram-bot-api` ) 19 | 20 | const TOKEN = `SEU TOKEN` 21 | 22 | const bot = new TelegramBot( TOKEN, { polling: true } ) 23 | ``` 24 | 25 | ## Gerando o Token 26 | 27 | Para gerar o nosso token, sera nescessario falar com o [@BotFather](https://telegram.me/botfather) 28 | 29 | ![@BotFather](http://i.imgur.com/3dvVOwT.png) 30 | 31 | Execute o seguinte comando: '/newbot' e siga as instruções: 32 | 33 | ![Criando o Bot](http://i.imgur.com/q5GsuRY.png) 34 | 35 | Agora vou incluir o token na minha configuração: 36 | 37 | ```js 38 | const TelegramBot = require( `node-telegram-bot-api` ) 39 | 40 | const TOKEN = `373045955:AAGvpCeqMocpkDgrdqjebqK5ZiV24vDifZU` 41 | 42 | const bot = new TelegramBot( TOKEN, { polling: true } ) 43 | ``` 44 | ## Entendo como o BOT funciona 45 | 46 | Agora que já temos o nosso BOT configurado, vamos tentar entender um pouco como ele funciona. Vamos começar criando o comando mais basico que ele possa entender. 47 | 48 | ```js 49 | bot.on('message', function(msg){ 50 | console.log('msg', msg) 51 | }) 52 | ``` 53 | 54 | Agora inicie o nosso BOT com o seguinte comando: 55 | 56 | ``` 57 | node index.js 58 | ``` 59 | 60 | Agora abra a conversa com o seu bot e digite alguma mensagem para ele da seguinte forma: 61 | 62 | ![Falando com o Bot](http://i.imgur.com/nocVBto.png) 63 | 64 | O resultado no console do Node sera o seguinte: 65 | 66 | ``` 67 | { message_id: 2, 68 | from: 69 | { id: 77586615, 70 | first_name: 'Rafael', 71 | last_name: 'Vicio', 72 | username: 'rafaelvicio' }, 73 | chat: 74 | { id: 77586615, 75 | first_name: 'Rafael', 76 | last_name: 'Vicio', 77 | username: 'rafaelvicio', 78 | type: 'private' }, 79 | date: 1492093704, 80 | text: 'Ola Bot!' } 81 | } 82 | ``` 83 | 84 | Com essa estrutura voce consegue perceber algumas informações importantes como quem mandou, o que mandou entre outras informações. 85 | 86 | ## Criando o seu primeiro comando 87 | 88 | O BOT trabalha escutando alguns eventos, para esse simples BOT nos vamos trabalhar apenas com um comando basico que escuta as mensagens enviadas pelo chat e retorna a mesma mensagem para quem enviou. 89 | 90 | Para isso vamos utilizar o evento onText, que, como você deve estar imaginando, escuta os textos enviados nas mensagens. 91 | 92 | Para mais detalhes sobre os de eventos suportados, você pode consultar a documentação da API: [Usage - node-telegram-bot-api](https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md) 93 | 94 | Um detalhe desse evento é que ele recebe como primeiro parametro uma RegEx, o que nos permite verificar o texto enviado. Vamos ao exemplo: 95 | 96 | ```js 97 | bot.onText( /\/echo (.*)/, function(msg, match){ 98 | console.log( `echo msg: `, msg ) 99 | console.log( `echo match: `, match ) 100 | }) 101 | ``` 102 | 103 | Rodando a aplicação novamente, e enviando a mensagem '/echo oi' para o BOT, temos o seguinte retorno: 104 | 105 | ``` 106 | echo msg: { message_id: 7, 107 | from: 108 | { id: 77586615, 109 | first_name: 'Rafael', 110 | last_name: 'Vicio', 111 | username: 'rafaelvicio' }, 112 | chat: 113 | { id: 77586615, 114 | first_name: 'Rafael', 115 | last_name: 'Vicio', 116 | username: 'rafaelvicio', 117 | type: 'private' }, 118 | date: 1492093704, 119 | text: '/echo oi', 120 | entities: [ { type: 'bot_command', offset: 0, length: 5 } ] } 121 | 122 | echo match: [ '/echo oi', 123 | 'oi', 124 | index: 0, 125 | input: '/echo oi' ] 126 | ``` 127 | 128 | A estrutura do 'msg' ja foi apresentada a voce anteriormente, agora fique atento a estrutura do objeto match: 129 | 130 | ``` 131 | echo match: [ '/echo oi', 132 | 'oi', 133 | index: 0, 134 | input: '/echo oi' ] 135 | ``` 136 | 137 | Ele é simplismente um array que contém o resultado do match testando a mensagem recebida com a RegEx que foi definida no onText. 138 | 139 | Com isso podemos identificar o que esta em cada posição do array: 140 | 141 | * na posiçao 0: temos o valor total do texto 142 | * na posiçao 1: o texto sem a RegEx 143 | * na posiçao 2: o índice onde foi encontrada a RegEx 144 | * na posiçao 3: a entrada 145 | 146 | Como o objetivo do comando /echo e responder com o mesmo texto enviado, o que nos interessa é o item na posição 1 desse array. 147 | 148 | Para fazer o bot enviar uma mensagem, vamos utilizar a função bot.sendMessage, da seguinte maneira: 149 | 150 | ```js 151 | bot.sendMessage( id, text ) 152 | ``` 153 | 154 | Portanto, nosso código funciona da seguinte forma 155 | 156 | ```js 157 | var logErrorEcho = function logErrorEcho(msg) { 158 | return function (err) { 159 | return console.log(msg, err); 160 | }; 161 | }; 162 | 163 | var logSuccessEcho = function(msg, match){ 164 | return function(data){ 165 | console.log( 'Success:', data); 166 | }; 167 | }; 168 | 169 | var sendEcho = function(msg, match){ 170 | bot.sendMessage( msg.chat.id, match[ 1 ] ) 171 | .then( logSuccessEcho( msg, match ) ) 172 | .catch( logErrorEcho( 'Error:') ); 173 | }; 174 | 175 | bot.onText( /\/echo (.*)/, sendEcho); 176 | ``` 177 | Com isso, o seu bot vai ter a função /echo que funciona da seguinte forma: 178 | 179 | ![Comando /echo](http://i.imgur.com/nocVBto.png) 180 | 181 | O código desse projeto esta disponivel no [GitHub](https://github.com/rafaelvicio/primeiro-bot) do autor. 182 | 183 | Aos que estiverem interessados em continuar com os estudos de desenvolvimentos de BOT, junte-se ao nosso [grupo no Telegram](https://t.me/brbotdevs) para unir-se à comunidade. 184 | -------------------------------------------------------------------------------- /brainstorm.md: -------------------------------------------------------------------------------- 1 | # Ideias para projetos a serem desenvolvidos coletivamente 2 | - Bot inline de pesquisa no OMDB 3 | - Bot para turmas de faculdades 4 | - Bot para informar horários de ônibus 5 | --------------------------------------------------------------------------------