feat: initial commit of Sistema do Mestre application
Add complete Flask web application with Telegram bot integration, multiple AI provider support (llama.cpp, OpenRouter, z.ai, StepFun), extensive order banks for BDSM-themed gameplay, automated cron scheduling, and responsive web UI with inference parameter controls.
This commit is contained in:
Executable
+107
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Sistema de envio automático de Contos Eróticos para o Telegram.
|
||||
Envia um conto erótico aleatório a cada 50 minutos.
|
||||
Utiliza todos os geradores de contos do projeto.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import random
|
||||
import sys
|
||||
import time
|
||||
|
||||
import requests
|
||||
|
||||
from dados_bunda_cu import gerar_conto_bunda_cu
|
||||
|
||||
# ── Logging ──
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s [%(levelname)s] %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S",
|
||||
)
|
||||
logger = logging.getLogger("conto_erotico")
|
||||
|
||||
# ── Telegram ──
|
||||
BOT_TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "")
|
||||
CHAT_ID = os.environ.get("TELEGRAM_CHAT_ID", "")
|
||||
|
||||
if not BOT_TOKEN or not CHAT_ID:
|
||||
logger.error("TELEGRAM_BOT_TOKEN e TELEGRAM_CHAT_ID devem estar definidos no .env")
|
||||
sys.exit(1)
|
||||
|
||||
TELEGRAM_API = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
|
||||
|
||||
|
||||
def enviar_telegram(texto):
|
||||
"""Envia uma mensagem de texto longa para o Telegram com timestamp.
|
||||
Se o texto for muito grande, divide em partes e envia sequencialmente."""
|
||||
agora = datetime.now().strftime("%d/%m/%Y %H:%M")
|
||||
rodape = f"\n\n📅 {agora}"
|
||||
max_len = 4000
|
||||
# Anexa o timestamp na última parte
|
||||
partes = [texto[i:i+max_len] for i in range(0, len(texto), max_len)]
|
||||
if partes:
|
||||
partes[-1] += rodape
|
||||
for i, parte in enumerate(partes):
|
||||
try:
|
||||
resp = requests.post(TELEGRAM_API, json={
|
||||
"chat_id": CHAT_ID,
|
||||
"text": parte,
|
||||
"parse_mode": "HTML",
|
||||
}, timeout=15)
|
||||
if resp.status_code != 200:
|
||||
logger.warning("Telegram retornou %s (parte %d/%d): %s",
|
||||
resp.status_code, i+1, len(partes), resp.text[:200])
|
||||
else:
|
||||
logger.info("Parte %d/%d do conto enviada ao Telegram.", i+1, len(partes))
|
||||
except requests.RequestException as exc:
|
||||
logger.error("Falha ao enviar parte %d/%d: %s", i+1, len(partes), exc)
|
||||
|
||||
|
||||
# ── Geradores de contos ──
|
||||
GERADORES = [
|
||||
("📖 Exibindo Bunda e Cú", gerar_conto_bunda_cu),
|
||||
]
|
||||
|
||||
|
||||
def gerar_conto():
|
||||
"""Seleciona um gerador aleatório e retorna o conto com cabeçalho."""
|
||||
titulo, gerador = random.choice(GERADORES)
|
||||
try:
|
||||
conto = gerador()
|
||||
except Exception as exc:
|
||||
logger.exception("Erro ao gerar conto com %s", titulo)
|
||||
conto = f"Erro ao gerar conto: {exc}"
|
||||
return f"📖 <b>CONTO ERÓTICO</b> 🖤\n🎭 <b>{titulo}</b>\n\n{conto}"
|
||||
|
||||
|
||||
def loop_principal():
|
||||
"""Loop infinito que envia contos a cada 50 minutos."""
|
||||
logger.info("📖 Sistema de Contos Eróticos iniciado.")
|
||||
logger.info("Bot: @hermesjogo1000")
|
||||
logger.info("Intervalo: 50 minutos entre contos.")
|
||||
enviar_telegram("📖 SISTEMA DE CONTOS ERÓTICOS ATIVADO.\n"
|
||||
"Contos serão enviados automaticamente a cada 50 minutos.")
|
||||
|
||||
while True:
|
||||
try:
|
||||
texto = gerar_conto()
|
||||
logger.info("Enviando conto erótico...")
|
||||
enviar_telegram(texto)
|
||||
|
||||
# Aguarda 50 minutos (3000 segundos)
|
||||
logger.info("Aguardando 50 minutos até o próximo conto...")
|
||||
time.sleep(50 * 60)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
logger.info("Sistema encerrado pelo usuário.")
|
||||
enviar_telegram("📖 SISTEMA DE CONTOS ERÓTICOS DESATIVADO.")
|
||||
break
|
||||
except Exception as exc:
|
||||
logger.exception("Erro no loop principal: %s", exc)
|
||||
time.sleep(60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
loop_principal()
|
||||
Reference in New Issue
Block a user