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: 3.681 ]
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>
Monitoramento de Comunicação - Blackbox Exporter(ICMP) + Prometheus + Grafana
Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning
Monitorando as conversas do MSN
Rundeck - Um Poderoso Agendador de Tarefas
Como isolar seus projetos Python com virtualenv (ambiente virtual)
Python: automatizando a extração de informações na web com expressões regulares
Como baixar vídeos do Facebook via terminal
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Linux é a solução para o fim do Windows10? [RESOLVIDO] (6)
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (0)
Programa fora de escala na tela do pc (29)









