Comecei a me aprofundar no mundo da TI há apenas três semanas. Sério, três semanas atrás eu nem entendia a sintaxe HTML, e meu conhecimento sobre linguagens de programação se limitava ao currículo escolar de Pascal de dez anos atrás. No entanto, decidi participar de um acampamento de TI onde seria interessante criar um bot. Pensei que isso provavelmente não era tão difícil.
A partir daí começou um longo caminho, no qual eu:
- provisionei um servidor em nuvem com Ubuntu,
- registrei-me no GitHub,
- aprendi a sintaxe básica de JavaScript,
- li uma tonelada de artigos em inglês e russo,
- finalmente fiz o bot,
- escrevi este artigo, finalmente.
O resultado final ficou mais ou menos assim:

Devo avisar que este artigo é para iniciantes — para entender como realizar tarefas elementares desde o zero.
E também — para programadores experientes — apenas para dividi-los um pouco.
1. Como escrever código em JS?
Eu sabia que precisava, pelo menos, entender a sintaxe da linguagem. Escolhi JavaScript, simplesmente porque meu próximo passo seria criar um aplicativo em ReactNative. Comecei com na Codecademy e fiquei muito empolgado. Os primeiros 7 dias são gratuitos. Projetos reais. Recomendo. Demorou cerca de 25 horas para completá-lo. Na verdade, nem tudo isso foi muito útil. Assim é mais ou menos a estrutura do curso e detalhadamente o primeiro bloco.

2. Como registrar um bot?
No início, fui muito ajudado por este do blog de um certo Archakov. Ele explica o começo. Mas o principal que há lá é a instrução para registrar o bot. Melhor não poderia escrever, e como esta é a parte mais fácil, apenas vou resumir. É necessário criar um bot e obter sua API. Isso é feito através de outro bot — @BotFather. Encontre-o no Telegram, envie uma mensagem, siga o caminho simples e obtenha (salve!) a chave da API (um conjunto de números e letras). Eu a utilizei mais tarde.

3. Como é o código do bot?
Após longo estudo de artigos, percebi que deveria usar alguma biblioteca (código de terceiros no formato de módulo), para não ter que me preocupar em estudar a API do Telegram e criar grandes partes de código do zero. Encontrei o framework , que precisava ser conectado a algo usando npm ou yarn. Era assim que eu entendia na época sobre como era a implementação do bot. Você pode rir disso. Eu não me importo. O que mais me ajudou na criação subsequente do bot foram os exemplos indicados no final da página:

3. Como criar seu próprio servidor em nuvem por 100 rublos
Após longas buscas, percebi que o comando ‘npm’ da imagem acima se refere ao terminal. O terminal está em todo lugar, mas para executá-lo é necessário instalar o Node Package Manager. O problema era que eu programava no PixelBook com ChromeOS. Vou pular uma grande parte sobre como aprendi Linux — para a maioria, isso é irrelevante. Se você tem Windows ou MacBook, já tem um console.
Em resumo, instalei o Linux através do Crostini.
No entanto, durante o processo, percebi que para que o bot funcionasse constantemente (e não apenas quando meu computador estava ligado), eu precisava de um servidor em nuvem. Eu escolhi Dei 100 rublos e comprei o servidor Ubuntu mais barato (veja a imagem).

4. Como preparar o servidor para rodar o bot
Depois disso, percebi que precisava criar uma pasta no servidor onde colocaria o arquivo com o código. Para isso, no console (executando diretamente no site através do botão 'Abrir console'), digitei
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmRecomendo fortemente que nesta etapa você configure a conexão ao servidor através do seu console. Aqui está Isso permitirá trabalhar com o servidor diretamente através do console do seu computador.
5. Como escrever o código do primeiro bot.
Agora vem a revelação para mim. Qualquer programa é simplesmente uma sequência de textos. Pode-se digitar em qualquer lugar, salvar com a extensão correta e pronto. Você é incrível. Eu usei , mas na realidade, pode-se simplesmente escrever no bloco de notas padrão. O importante é depois salvar o arquivo com a extensão correta. É como escrever um texto no Word e salvar.
Criei um novo arquivo, no qual colequei o código do exemplo na página telegraf e salvei como index.js (não é obrigatório nomear o arquivo assim, mas é comum). Importante — substitua BOT_TOKEN pelo seu token de API da segunda etapa.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Bem-vindo!'))
bot.help((ctx) => ctx.reply('Envie-me um adesivo'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('oi', (ctx) => ctx.reply('Olá'))
bot.launch()6. Como enviar o código ao servidor via github
Agora eu precisava de alguma forma colocar esse código no servidor e executá-lo. Isso se tornou um desafio para mim. No final, depois de muitas dificuldades, percebi que seria mais fácil criar um arquivo no github que permitisse atualizar o código através de um comando no console. Eu criei uma conta em e fiz , onde carreguei o arquivo. Depois disso, eu precisava entender como configurar o upload de arquivos da minha conta (pública!) para a pasta bot (se por acaso você saiu dela — basta escrever cd bot).
7. Como carregar arquivos no servidor via github parte 2
Eu precisava instalar no servidor um programa que carregasse arquivos do git. Eu instalei o git no servidor, digitando no console
apt-get install gitDepois disso, eu precisava configurar o upload de arquivos. Para isso, eu digitei no terminal
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Decidi ignorar esse problema.
E para carregar a biblioteca telegraf, que pedimos na primeira linha do código, digite no console o comando.
npm install telegraf8. Como iniciar o bot
Para isso, estando na pasta com o arquivo (para navegar entre pastas no console — execute o comando no formato cd bot Para ter certeza de que você está no lugar certo, pode digitar um comando que exibirá no console todos os arquivos e pastas que existem lá ls -a
Para iniciar, eu digitei no console
node index.js
Se não houver nenhum erro — tudo está certo, o bot está funcionando. Procure por ele no Telegram. Se houver um erro — aplique seus conhecimentos do primeiro ponto.
9. Como iniciar o bot em segundo plano
Você rapidamente perceberá que o bot funciona apenas quando você mesmo está no console. Para resolver esse problema, usei o comando
screenDepois disso, aparecerá uma tela com algum texto. Isso significa que está tudo certo. Você está em um servidor virtual em um servidor na nuvem. Para entender melhor como tudo isso funciona — . Basta entrar na sua pasta e digitar o comando para iniciar o bot
node index.js10. Como funciona o bot e como expandir sua funcionalidade
O que nosso bot de exemplo é capaz de fazer? Ele consegue
bot.start((ctx) => ctx.reply('Welcome!'))dizer "Welcome!" no momento da inicialização (tente mudar o texto)
bot.help((ctx) => ctx.reply('Send me a sticker'))em resposta ao comando padrão /help enviar a mensagem "Send me a sticker"
bot.on('sticker', (ctx) => ctx.reply(''))em resposta a um sticker enviar uma aprovação
bot.hears('hi', (ctx) => ctx.reply('Hey there')) responder "Hey there", se alguém escrever ‘hi’
bot.launch()

Se você olhar o código em , você rapidamente perceberá que não me afastei muito dessa funcionalidade. O que é usado ativamente é a função ctx.replyWithPhoto Ela permite enviar uma foto ou gif específico em resposta a um texto definido.
Uma parte significativa do código foi escrita por crianças de 11 a 13 anos, a quem eu dei acesso ao bot. Eles introduziram seus próprios casos de uso. Acho que é fácil identificar qual parte foi feita por eles.
Por exemplo, para a mensagem "jake", um gif de um personagem famoso do desenho animado Hora de Aventura é enviado.

Para desenvolver o bot mais, ao conectar o teclado, é necessário ver exemplos, como
11. Como atualizar o código e reiniciar o bot
Não esqueça que você precisa atualizar o código não apenas no GitHub, mas também no servidor. É fácil fazer isso — pare o bot (pressione ctrl+c),
— insira no console, estando na pasta de destino, git pull
— reinicie o bot com o comando node index.js
FIM
Muitas coisas descritas neste arquivo serão super óbvias para programadores experientes. No entanto, quando eu mesmo tentei fazer a transição para o mundo dos bots de uma vez, senti falta de um guia como este. Um guia que não ignora o que é óbvio e simples para qualquer especialista em TI.
No futuro, planejo escrever um post sobre como criar seu primeiro aplicativo em React Native nesse mesmo estilo, então siga-nos!
Fonte: habr.com
