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.022 ]
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
SuperDNS: Solução definitiva para DNS dinâmico
Rundeck - Um Poderoso Agendador de Tarefas
Centralizando logs com Promtail + Loki + Grafana
Monitorando as conversas do MSN
Como criar um bot para curtir e comentar perfis do Instagram
RapidScan - Multi-Tool WEB Vulnerability Scanner
Integração do ChatGPT em uma API Python
Qu1cksc0pe - All-in-One Static Malware Analysis Tool
Como isolar seus projetos Python com virtualenv (ambiente virtual)
Berry Bank: Criando um Banco Digital Gamificado para seus Filhos com Gentoo, Flask e Tailscale
Papagaiando o XFCE com temas e recursos
Instale o DOOM Retro no Gentoo facilmente via Overlay
Steam (Flatpak) rodando jogos em partição NTFS
O dock Plank + U-Launcher deixam qualquer desktop mais produtivo
Instalar Linux em notebook Sony Vaio VPCEG13EB (17)
Alguém tem que acabar com ANATEL!!! (10)
O que você está ouvindo agora? [2] (229)









