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.079 ]
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>
Detectando vulnerabilidades com o Nessus
Instalando Apache, PHP e PostgreSQL no Slackware 12 (compilando)
Centralizando logs com Promtail + Loki + Grafana
Monitoramento de Comunicação - Blackbox Exporter(ICMP) + Prometheus + Grafana
Criando um leitor de RSS com Python
ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583
Threads - Importância dentro de um software
Como criar um keylogger em Python
Embutindo imagens nos scripts Python para aplicações Tkinter
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Instalação Completa e Configuração Básica do Void Linux
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Tenha opção de emblemas embutido no pcmanfm
Instalar o Microsoft Teams no Ubuntu e Derivados
Erro ao instalar o linux-headers (2)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (4)
Instalador não reconhece SSD Sata. (12)









