This commit is contained in:
2026-10-02 14:28:41 -03:00
parent 3ea3e0dc29
commit 30d5b178e6
9 changed files with 142 additions and 40 deletions
+44 -22
View File
@@ -36,6 +36,12 @@ class ConfigEnvio:
intervalo_minutos: int
arquivo_ordens: str
quantidade_ordens: int # 0 = sem limite
ia_mode: bool = False
def _detectar_ia_mode(arquivo: str) -> bool:
nome = arquivo.strip().lower()
return nome == "ordens12.json" or nome.startswith("ia_")
def carregar_config_envio(numero: int) -> ConfigEnvio:
@@ -45,12 +51,14 @@ def carregar_config_envio(numero: int) -> ConfigEnvio:
intervalo = int(os.getenv(f"{prefixo}INTERVALO_MINUTOS", "1"))
arquivo = os.getenv(f"{prefixo}ARQUIVO_ORDENS", f"ordens{numero}.json").strip()
quantidade = int(os.getenv(f"{prefixo}QUANTIDADE_ORDENS", "0"))
ia_mode = _detectar_ia_mode(arquivo)
return ConfigEnvio(
numero=numero,
ativo=ativo,
intervalo_minutos=intervalo,
arquivo_ordens=arquivo,
quantidade_ordens=quantidade,
ia_mode=ia_mode,
)
@@ -124,30 +132,40 @@ async def loop_envio(config: ConfigEnvio) -> None:
log.error("TELEGRAM_TOKEN e TELEGRAM_CHAT_ID devem estar configurados no .env")
return
log.info("Carregando ordens de %s para envio automático %d...", config.arquivo_ordens, config.numero)
ordens = carregar_ordens(config.arquivo_ordens)
random.shuffle(ordens)
bot = Bot(token=TOKEN)
usando_ia = config.ia_mode
# Mensagem de inicialização
artigo = "o" if SEXO == "masculino" else "a"
if config.quantidade_ordens > 1:
info_quantidade = f"Ordens por ciclo: {config.quantidade_ordens}\n"
if usando_ia:
from dados_ia import gerar_ordem_ia
log.info("Modo IA ativado para envio automático %d. Gerando ordens via %s...", config.numero, os.getenv("OPENROUTER_MODEL", "modelo padrao"))
msg_start = (
f"🚀 Envio Automático {config.numero} — MODO IA ativado.\n"
f"Sexo: {SEXO} | Idade: {IDADE}\n"
f"Intervalo: {config.intervalo_minutos} minuto(s)\n"
f"Ordens por ciclo: {config.quantidade_ordens}\n"
f"Modelo de IA: {os.getenv('OPENROUTER_MODEL', 'desconhecido')}\n"
f"Horário de funcionamento: {HORA_INICIO} - {HORA_FIM}\n\n"
f"DeepSeek está online e vai gerar cada ordem em tempo real.\n"
f"Prepare-se para obedecer a IA."
)
await enviar_mensagem(bot, msg_start)
else:
info_quantidade = "Ordens por ciclo: 1\n"
msg_start = (
f"🚀 Envio Automático {config.numero} ativado.\n"
f"Sexo: {SEXO} | Idade: {IDADE}\n"
f"Intervalo: {config.intervalo_minutos} minuto(s)\n"
f"{info_quantidade}"
f"Arquivo de ordens: {config.arquivo_ordens}\n"
f"Total de ordens disponíveis: {len(ordens)}\n"
f"Horário de funcionamento: {HORA_INICIO} - {HORA_FIM}\n\n"
f"A(s) primeira(s) ordem(ns) será(ão) enviada(s) imediatamente.\n"
f"Prepare-se para cumprir todas as ordens."
)
await enviar_mensagem(bot, msg_start)
log.info("Carregando ordens de %s para envio automático %d...", config.arquivo_ordens, config.numero)
ordens = carregar_ordens(config.arquivo_ordens)
random.shuffle(ordens)
msg_start = (
f"🚀 Envio Automático {config.numero} ativado.\n"
f"Sexo: {SEXO} | Idade: {IDADE}\n"
f"Intervalo: {config.intervalo_minutos} minuto(s)\n"
f"Ordens por ciclo: {config.quantidade_ordens}\n"
f"Arquivo de ordens: {config.arquivo_ordens}\n"
f"Total de ordens disponíveis: {len(ordens)}\n"
f"Horário de funcionamento: {HORA_INICIO} - {HORA_FIM}\n\n"
f"A(s) primeira(s) ordem(ns) será(ão) enviada(s) imediatamente.\n"
f"Prepare-se para cumprir todas as ordens."
)
await enviar_mensagem(bot, msg_start)
agora = datetime.now().strftime("%H:%M")
if not dentro_do_horario():
@@ -170,7 +188,10 @@ async def loop_envio(config: ConfigEnvio) -> None:
# Envia lote de ordens
for i in range(qtd):
ordem = ordens[(ordem_index + i) % len(ordens)]
if usando_ia:
ordem = await gerar_ordem_ia()
else:
ordem = ordens[(ordem_index + i) % len(ordens)]
ordem_adaptada = adaptar_ordem(ordem)
agora = datetime.now().strftime("%d/%m/%Y %H:%M")
@@ -206,6 +227,7 @@ def main():
carregar_config_envio(8),
carregar_config_envio(9),
carregar_config_envio(10),
carregar_config_envio(11),
]
asyncio.run(_executar_todos_envios(configs))
except KeyboardInterrupt: