import json import os import random import asyncio import logging from datetime import datetime from dotenv import load_dotenv from telegram import Bot from telegram.error import TelegramError load_dotenv() logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", ) log = logging.getLogger(__name__) # ─── Config ─────────────────────────────────────────────────────────────────── TOKEN = os.getenv("TELEGRAM_TOKEN", "") CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "") SEXO = os.getenv("SEXO", "masculino").strip().lower() IDADE = int(os.getenv("IDADE", "30")) INTERVALO = int(os.getenv("INTERVALO_MINUTOS", "5")) ORDENS_PATH = os.path.join(os.path.dirname(__file__), "ordens.json") # ─── Substituições para sexo feminino ────────────────────────────────────────── # Ordem importa: mais específicas primeiro SUBSTITUICOES_FEMININO = [ ("a cabeça do pau", "o clitóris"), ("cabeça do pau", "clitóris"), ("da cabeça do pau", "do clitóris"), ("a glande", "o clitóris"), ("da glande", "do clitóris"), ("glande", "clitóris"), ("do pau", "da buceta"), ("no pau", "na buceta"), ("o pau", "a buceta"), ("um pau", "uma buceta"), ("pau", "buceta"), ("o saco", "a xota"), ("do saco", "da xota"), ("no saco", "na xota"), ("saco", "xota"), ("a cueca", "a calcinha"), ("da cueca", "da calcinha"), ("na cueca", "na calcinha"), ("cueca", "calcinha"), ("punheta", "siririca"), ("porra", "gozo"), ("próstata", "ponto G"), ] def adaptar_ordem(ordem: str) -> str: if SEXO == "feminino": for masculino, feminino in SUBSTITUICOES_FEMININO: ordem = ordem.replace(masculino, feminino) return ordem # ─── Carregar ordens ────────────────────────────────────────────────────────── def carregar_ordens(): with open(ORDENS_PATH, "r", encoding="utf-8") as f: ordens = json.load(f) if not ordens: raise ValueError("Nenhuma ordem encontrada em ordens.json") return ordens # ─── Envio Telegram ─────────────────────────────────────────────────────────── async def enviar_mensagem(bot: Bot, texto: str): try: await bot.send_message(chat_id=CHAT_ID, text=texto) log.info("Ordem enviada com sucesso.") except TelegramError as e: log.error("Erro ao enviar mensagem: %s", e) # ─── Comando /start ─────────────────────────────────────────────────────────── async def cmd_start(ordens: list): bot = Bot(token=TOKEN) artigo = "o" if SEXO == "masculino" else "a" msg_start = ( f"Olá {artigo} usuário!\n\n" f"O sistema de ordens automáticas foi ativado.\n" f"Sexo: {SEXO} | Idade: {IDADE}\n" f"Intervalo: {INTERVALO} minuto(s)\n" f"Total de ordens disponíveis: {len(ordens)}\n\n" f"A primeira ordem será enviada em {INTERVALO} minuto(s).\n" f"Prepare-se para cumprir todas as ordens." ) await enviar_mensagem(bot, msg_start) # ─── Loop principal ──────────────────────────────────────────────────────────── async def loop_principal(): if not TOKEN or not CHAT_ID: log.error("TELEGRAM_TOKEN e TELEGRAM_CHAT_ID devem estar configurados no .env") return ordens = carregar_ordens() random.shuffle(ordens) bot = Bot(token=TOKEN) await cmd_start(ordens) await asyncio.sleep(INTERVALO * 60) ordem_index = 0 while True: ordem = ordens[ordem_index % len(ordens)] ordem_adaptada = adaptar_ordem(ordem) agora = datetime.now().strftime("%d/%m/%Y %H:%M") texto = ( f"ORDEM #{ordem_index + 1}\n" f"{agora}\n\n" f"{ordem_adaptada}\n\n" f"Proxima ordem em {INTERVALO} minuto(s)." f"\n\nCumpra agora." ) await enviar_mensagem(bot, texto) ordem_index += 1 await asyncio.sleep(INTERVALO * 60) # ─── Entry point ────────────────────────────────────────────────────────────── def main(): try: asyncio.run(loop_principal()) except KeyboardInterrupt: log.info("Sistema encerrado pelo usuário.") except Exception as e: log.error("Erro fatal: %s", e) if __name__ == "__main__": main()