Crie um bot para Telegram e gerencie a escala de plantonistas

O uso de bots em aplicativos de mensagens como o Telegram tem se tornado cada vez mais comum. Eles podem ser utilizados para as mais diversas finalidades, desde tirar dúvidas até realizar tarefas específicas. Neste artigo, apresentaremos um exemplo de bot para o Telegram que permite o cadastro e consulta de plantonistas.

[ Hits: 2.951 ]

Por: Leonardo Berbert Gomes em 04/04/2023 | Blog: https://www.linkedin.com/in/leoberbert


Introdução



Antes de começarmos, é importante que você tenha instalado em seu computador o Python na versão 3.7 ou superior, bem como o módulo sqlite3.

Além disso, é necessário que você tenha criado um bot no Telegram por meio do @BotFather e tenha obtido o token de acesso.

Você também precisará instalar as bibliotecas contidas no arquivo "requirements.txt" através do comando:

pip3 install -r requirements.txt

O código fonte do projeto pode ser obtido através do comando:

git clone https://github.com/leoberbert/telegram-bot.git

Ou visitando o repositório em: https://github.com/leoberbert/telegram-bot

A seguir, apresentaremos os passos para a criação do bot:

1. Criação da base de dados

O primeiro passo é criar a base de dados onde serão armazenados os dados dos plantonistas. Para isso, execute o código abaixo, que criará o arquivo plantao.db:

python3 database.py

import sqlite3

# Conectar ao banco de dados
conn = sqlite3.connect('plantao.db')

# Criar uma tabela chamada plantao
conn.execute('''
    CREATE TABLE plantao (
        plantonista TEXT,
        data TEXT
    );
''')

# Fechar a conexão com o banco de dados
conn.close()

2. Subindo o servidor WEB

Agora, iremos subir o servidor WEB para realizarmos o cadastro dos plantonistas. Execute o comando abaixo:

python3 server.py

from flask import Flask, render_template, request, redirect, url_for
from flask_httpauth import HTTPBasicAuth
import sqlite3
import logging

log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)

app = Flask(__name__)
auth = HTTPBasicAuth()

# Define o caminho para o banco de dados
DB_PATH = 'plantao.db'

# Dicionário com os usuários e senhas
USERS = {
    "plantonista": "guarana"
}

# Função que verifica se um usuário está autorizado
@auth.verify_password
def verify(username, password):
    if not (username and password):
        return False
    return USERS.get(username) == password

@app.route('/plantao', methods=['GET', 'POST'])
@auth.login_required
def cadastro_plantonista():
    if request.method == 'POST':
        plantonista = request.form['plantonista']
        data = request.form['data']

        # Conecta ao banco de dados
        conn = sqlite3.connect(DB_PATH)

        # Insere os dados na tabela "plantao"
        cur = conn.cursor()
        cur.execute("INSERT INTO plantao (plantonista, data) VALUES (?, ?)", (plantonista, data))
        conn.commit()

        # Fecha a conexão com o banco de dados
        conn.close()

        # Redireciona para a página de confirmação
        return redirect(url_for('cadastro_sucesso', plantonista=plantonista, data=data))

    return render_template('index.html')

@app.route('/cadastro_sucesso')
def cadastro_sucesso():
    plantonista = request.args.get('plantonista')
    data = request.args.get('data')
    return render_template('cadastro_sucesso.html', plantonista=plantonista, data=data)

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True,port=5000)

Acesse o endereço em seu navegador:

http://localhost:5000/plantao

Será solicitado o usuário e senha cadastrados no arquivo server.py. Após o login, você será direcionado para a tela de cadastro, onde poderá cadastrar o nome do plantão e a data em que ele estará de plantão.

3. Consultando o cadastro

Para verificar se o cadastro foi realizado com sucesso, execute o comando abaixo:

python3 show_cadastro.py

import sqlite3

# Estabelecendo conexão com o banco de dados
conn = sqlite3.connect('plantao.db')

# Criando um cursor para executar comandos SQL
cursor = conn.cursor()

# Executando uma consulta SELECT em uma tabela
cursor.execute("SELECT * FROM plantao")

# Obtendo todos os resultados da consulta
resultados = cursor.fetchall()

# Imprimindo os resultados na tela
for linha in resultados:
    print(linha)

# Fechando a conexão com o banco de dados
conn.close()

Será exibido o nome do plantonista e a data em que ele estará de plantão.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Iniciando o bot
Outros artigos deste autor

Linux, uma história sem fim!

Gerando gráficos sem mistérios no MRTG (Debian)

Centralizando logs com Promtail + Loki + Grafana

SuperDNS: Solução definitiva para DNS dinâmico

Solucionando problemas no sistema de arquivos

Leitura recomendada

Python - Threads

rwd - Restart When Down

Python Flask Básico

Monitorando produtos no ML com Python 3 via BeautifulSoup

Python + ADB

  
Comentários
[1] Comentário enviado por maurixnovatrento em 14/05/2023 - 21:52h

bacana.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10



___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts