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.468 ]

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


Iniciando o bot



4. Iniciando o bot

Agora, iremos iniciar o bot para que possamos interagir com ele. É necessário substituir o token de acesso do bot no código abaixo:

python3 boot.py

import logging
import sqlite3
from datetime import datetime
from telegram.ext import Updater, CommandHandler, MessageHandler, filters

# Habilitar logs de erro
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                    level=logging.ERROR)

# Definir o token de acesso do bot
TOKEN = "seu_token_aqui"

def plantonista_do_dia(update, context):
    # Obter a data atual
    hoje = datetime.today().strftime('%Y-%m-%d')

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

    # Consultar o plantonista do dia
    cursor = conn.execute("SELECT plantonista FROM plantao WHERE data=?", (hoje,))
    plantonistas = cursor.fetchall()

    if len(plantonistas) > 0:
        # Enviar mensagem com o nome do plantonista
        plantonista = plantonistas[0][0]
        context.bot.send_message(chat_id=update.effective_chat.id,
                                 text=f"O plantonista de hoje é {plantonista}.")
    else:
        # Enviar mensagem informando que não há plantonista cadastrado para hoje
        context.bot.send_message(chat_id=update.effective_chat.id,
                                 text="Não há plantonista cadastrado para hoje.")

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

# Definir o comando de ajuda
def ajuda(update, context):
    # Mensagem de ajuda
    ajuda_texto = "Comandos disponíveis:
/plantonista - Mostrar o plantonista do dia
/ajuda - Mostrar esta mensagem de ajuda
"

    # Enviar a mensagem de ajuda para o grupo
    context.bot.send_message(chat_id=update.effective_chat.id, text=ajuda_texto)

# Configurar o bot e os handlers de comandos e mensagens
updater = Updater(token=TOKEN, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler('plantonista', plantonista_do_dia))
dispatcher.add_handler(CommandHandler('ajuda', ajuda))

# Iniciar o bot
updater.start_polling()

# Mantém o bot em execução
updater.idle()

# Termina o bot
updater.stop()

5. Criando os templates de HMTL

Será necessário a criação do diretório template dentro do diretório onde seu boot será executado, pois por padrão o flask realiza a leitura nele:

mdkir templates

Arquivo cadastro_sucesso.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Cadastro de Plantonista - Sucesso</title>
    <style>
        /* Adicione aqui o CSS solicitado */
        body {
            background-color: #F5F5F5;
            font-family: Arial, sans-serif;
        }
        .container {
            width: 80%;
            margin: 0 auto;
            text-align: center;
            margin-top: 50px;
        }
        .card {
            background-color: #FFFFFF;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            padding: 30px;
            margin-bottom: 20px;
            text-align: center;
        }
        h1 {
            font-size: 32px;
            margin-top: 0;
        }
        p {
            font-size: 18px;
            margin-top: 20px;
            margin-bottom: 20px;
        }
        button {
            font-size: 18px;
            padding: 10px 30px;
            background-color: #008CBA;
            color: #FFFFFF;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h1>Cadastro realizado com sucesso!</h1>
            <p>Plantonista {{ plantonista }} cadastrado para a data {{ data }}</p>
            <a href="{{ url_for('cadastro_plantonista') }}"><button>Voltar</button></a>
        </div>
    </div>
</body>
</html>

Arquivo index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Cadastro de Plantonista</title>
    <style>
        body {
            background-color: #fff;
            color: #333;
            font-family: Arial, sans-serif;
            font-size: 16px;
            line-height: 1.5;
            margin: 0;
            padding: 0;
        }

        h1 {
            color: #0072c6;
            font-size: 2.5em;
            margin-top: 70px;
            margin-bottom: 20px;
            text-align: center;
        }

        form {
            background-color: #f2f2f2;
            border-radius: 10px;
            margin: 20px auto;
            padding: 20px;
            max-width: 400px;
        }

        label {
            display: block;
            font-weight: bold;
            margin-bottom: 10px;
        }

        input[type="text"], input[type="date"] {
            border: none;
            border-radius: 5px;
            font-size: 1em;
            padding: 10px;
            width: 100%;
        }

        input[type="submit"] {
            background-color: #0072c6;
            border: none;
            border-radius: 5px;
            color: #fff;
            cursor: pointer;
            font-size: 1em;
            margin-top: 20px;
            padding: 10px;
            transition: background-color 0.3s ease;
            width: 100%;
        }

        input[type="submit"]:hover {
            background-color: #005b9e;
        }
    </style>
</head>
<body>
    <h1>Cadastro de Plantonista</h1>
    <form action="/plantao" method="POST">
        <label for="plantonista">Plantonista:</label>
        <input type="text" name="plantonista" id="plantonista"><br><br>
        <label for="data">Data:</label>
        <input type="date" name="data" id="data" pattern="d{4}-d{2}-d{2}"><br><br>
        <input type="submit" value="Cadastrar">
    </form>
</body>
</html>

6. Interagindo com o bot

Agora que o bot está em execução, podemos interagir com ele no Telegram. É possível cadastrar novos plantonistas, bem como consultar a escala de plantão atual. Basta enviar as mensagens adequadas para o bot.

Caso queira ainda baixar o projeto do git caso tenha algum problema de formatação, segue o link:

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

Este foi um exemplo de como criar um bot para o Telegram que permite o cadastro e consulta de plantonistas. Com um pouco de conhecimento em programação e um bot criado, é possível implementar outras funcionalidades para atender às suas necessidades específicas.

[]'s leoberbert

Página anterior    

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

Centralizando logs com Promtail + Loki + Grafana

Rundeck - Um Poderoso Agendador de Tarefas

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

Detectando vulnerabilidades com o Nessus

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

Leitura recomendada

Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Python - Usando requests anônimos através da rede Tor

Python - Threads

Varredura de PING Utilizando o Python

  
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