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: 4.374 ]
Por: Leonardo Berbert Gomes em 04/04/2023 | Blog: https://www.linkedin.com/in/leoberbert
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()
<!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>
<!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>
Rundeck - Um Poderoso Agendador de Tarefas
Detectando vulnerabilidades com o Nessus
Instalando Apache, PHP e PostgreSQL no Slackware 12 (compilando)
Monitoramento de Comunicação - Blackbox Exporter(ICMP) + Prometheus + Grafana
Robótica com Android e Arduino
Trabalhando com permutações em ordem lexicográfica crescente
tux-gpt - Assistente de IA para o Terminal
Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Zen Kernel no Arch Linux (instalar e remover)
Como instalar e remover o kernel Liquorix
Fazendo o controle de Xbox 360 USB funcionar no One Piece Pirate Warriors 4 (Arch Linux/Steam)









