First Commit
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user