0% acharam este documento útil (0 voto)
60 visualizações2 páginas

Telegram Bot

Este documento é um código Python para um bot do Telegram que oferece serviços jurídicos, como análise de contratos, redação de petições e consulta de jurisprudência. O bot utiliza a biblioteca 'python-telegram-bot' e permite interações através de um menu interativo. O código inclui funções para lidar com comandos, botões, envio de arquivos e mensagens de texto, além de carregar variáveis de ambiente para o token do bot.

Enviado por

cgmaugusto
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
60 visualizações2 páginas

Telegram Bot

Este documento é um código Python para um bot do Telegram que oferece serviços jurídicos, como análise de contratos, redação de petições e consulta de jurisprudência. O bot utiliza a biblioteca 'python-telegram-bot' e permite interações através de um menu interativo. O código inclui funções para lidar com comandos, botões, envio de arquivos e mensagens de texto, além de carregar variáveis de ambiente para o token do bot.

Enviado por

cgmaugusto
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

from dotenv import load_dotenv

import os
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Application, CommandHandler, CallbackQueryHandler,
MessageHandler, filters, ContextTypes
from rag_direito2 import (
analisar_contrato,
redigir_peticao,
consultar_jurisprudencia,
clean_response,
chain,
)

# Carregar variáveis de ambiente


_ = load_dotenv()
TELEGRAM_BOT_TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')

# Função para exibir o menu interativo


async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
keyboard = [
1
1️⃣ [InlineKeyboardButton("1 Analisar Contrato",
callback_data="analisar_contrato")],
2️⃣ [InlineKeyboardButton(" Redigir Petição",
callback_data="redigir_peticao")],
3️⃣ [InlineKeyboardButton(" Consultar Jurisprudência",
callback_data="consultar_jurisprudencia")],
4️⃣ [InlineKeyboardButton(" Sair", callback_data="sair")],
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text("Olá! Escolha uma opção:",
reply_markup=reply_markup)

# Handler para lidar com os botões do menu


async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()

if query.data == "analisar_contrato":
await query.message.reply_text("Por favor, envie o arquivo PDF do
contrato.")
context.user_data["aguardando_arquivo"] = True
elif query.data == "redigir_peticao":
await query.message.reply_text(
"Por favor, informe o tipo de petição e os detalhes no formato:\n"
"Tipo: <tipo>\nDetalhes: <detalhes>"
)
context.user_data["aguardando_peticao"] = True
elif query.data == "consultar_jurisprudencia":
await query.message.reply_text("Por favor, envie o arquivo PDF da
jurisprudência e a pergunta.")
context.user_data["aguardando_jurisprudencia"] = True
elif query.data == "sair":
await query.message.reply_text("Obrigado por usar o assistente jurídico!
Até mais! 👋")

# Função para lidar com o envio de arquivos


async def handle_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data.get("aguardando_arquivo"):
file = await update.message.document.get_file()
file_path = f"temp_contrato_{update.message.from_user.id}.pdf"
await file.download_to_drive(file_path)
analise = analisar_contrato(file_path)
await update.message.reply_text(f"Análise do Contrato:\n{analise}")
os.remove(file_path)
context.user_data["aguardando_arquivo"] = False
else:
await update.message.reply_text("Por favor, use um comando válido.")

# Função para lidar com mensagens de texto


async def handle_text(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data.get("aguardando_peticao"):
texto = update.message.text
try:
tipo = texto.split("Tipo: ")[1].split("\n")[0].strip()
detalhes = texto.split("Detalhes: ")[1].strip()
peticao = redigir_peticao(tipo, detalhes)
await update.message.reply_text(f"Petição Redigida:\n{peticao}")
except Exception as e:
await update.message.reply_text(f"Erro ao processar a petição: {e}")
context.user_data["aguardando_peticao"] = False
else:
await update.message.reply_text("Por favor, use um comando válido.")

# Função principal para iniciar o bot


def main():
application = Application.builder().token(TELEGRAM_BOT_TOKEN).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(CallbackQueryHandler(button_handler))
application.add_handler(MessageHandler(filters.Document.PDF, handle_file))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND,
handle_text))
application.run_polling()

if __name__ == "__main__":
main()

Você também pode gostar