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
+8 -2
View File
@@ -61,17 +61,23 @@ ENVIAR9_ARQUIVO_ORDENS=ordens9.json
ENVIAR9_QUANTIDADE_ORDENS=1 ENVIAR9_QUANTIDADE_ORDENS=1
# ═══ Envio Automático 10 ════════════════════════════════════════════ # ═══ Envio Automático 10 ════════════════════════════════════════════
ENVIAR10_ATIVO=s ENVIAR10_ATIVO=n
ENVIAR10_INTERVALO_MINUTOS=1 ENVIAR10_INTERVALO_MINUTOS=1
ENVIAR10_ARQUIVO_ORDENS=ordens10.json ENVIAR10_ARQUIVO_ORDENS=ordens10.json
ENVIAR10_QUANTIDADE_ORDENS=1 ENVIAR10_QUANTIDADE_ORDENS=1
# ═══ Envio Automático 11 — IA ═══════════════════════════════════════
ENVIAR11_ATIVO=s
ENVIAR11_INTERVALO_MINUTOS=3
ENVIAR11_ARQUIVO_ORDENS=ordens12.json
ENVIAR11_QUANTIDADE_ORDENS=1
# ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════ # ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════
HORA_INICIO=08:00 HORA_INICIO=08:00
HORA_FIM=22:00 HORA_FIM=22:00
# OpenRouter AI # OpenRouter AI
OPENROUTER_API_KEY=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 OPENROUTER_API_KEY=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
OPENROUTER_MODEL=deepseek/deepseek-v4.1-flash:batch OPENROUTER_MODEL=cognitivecomputations/dolphin-mistral-24b-venice-edition
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_TIMEOUT=60 OPENROUTER_TIMEOUT=60
+8
View File
@@ -72,6 +72,14 @@ ENVIAR10_INTERVALO_MINUTOS=1
ENVIAR10_ARQUIVO_ORDENS=ordens10.json ENVIAR10_ARQUIVO_ORDENS=ordens10.json
ENVIAR10_QUANTIDADE_ORDENS=1 ENVIAR10_QUANTIDADE_ORDENS=1
# ═══ Envio Automático 11 — IA (usando o modelo do .env) ═════════════
# Quando ARQUIVO_ORDENS aponta para ordens12.json ou prefixo ia_,
# o sistema gera ordens dinamicamente via OpenRouter.
ENVIAR11_ATIVO=n
ENVIAR11_INTERVALO_MINUTOS=5
ENVIAR11_ARQUIVO_ORDENS=ordens12.json
ENVIAR11_QUANTIDADE_ORDENS=1
# ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════ # ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════
HORA_INICIO=08:00 HORA_INICIO=08:00
HORA_FIM=22:00 HORA_FIM=22:00
Binary file not shown.
Binary file not shown.
+64
View File
@@ -0,0 +1,64 @@
import json
import os
import logging
import httpx
log = logging.getLogger(__name__)
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
OPENROUTER_MODEL = os.getenv("OPENROUTER_MODEL", "deepseek/deepseek-v4.1-flash")
OPENROUTER_BASE_URL = os.getenv("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1")
OPENROUTER_TIMEOUT = int(os.getenv("OPENROUTER_TIMEOUT", "60"))
def carregar_prompt_base() -> str:
caminho = os.path.join(os.path.dirname(__file__), "ordens12.json")
with open(caminho, "r", encoding="utf-8") as f:
dados = json.load(f)
if isinstance(dados, list) and len(dados) > 0:
return dados[0]
return ""
async def gerar_ordem_ia() -> str:
prompt_base = carregar_prompt_base()
if not OPENROUTER_API_KEY:
log.error("OPENROUTER_API_KEY nao configurada no .env")
return "[ERRO: API key nao configurada. Configure OPENROUTER_API_KEY no .env]"
headers = {
"Authorization": f"Bearer {OPENROUTER_API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": OPENROUTER_MODEL,
"messages": [
{
"role": "system",
"content": prompt_base,
},
{
"role": "user",
"content": "Gere uma ordem de humilhação agora, completa e detalhada, como se fosse o Mestre DeepSeek falando. Nao se repita. Seja criativa e picante.",
},
],
"max_tokens": 2048,
"temperature": 0.9,
}
try:
async with httpx.AsyncClient(timeout=OPENROUTER_TIMEOUT) as client:
resp = await client.post(
f"{OPENROUTER_BASE_URL}/chat/completions",
headers=headers,
json=payload,
)
resp.raise_for_status()
data = resp.json()
ordem = data["choices"][0]["message"]["content"].strip()
return ordem
except Exception as e:
log.error("Erro ao gerar ordem com IA: %s", e)
return f"[ERRO ao gerar ordem: {e}]"
+13 -15
View File
@@ -30,7 +30,7 @@ HORA_FIM=$(grep_val HORA_FIM)
# Configuração de cada envio automático # Configuração de cada envio automático
declare -a ENVIAR_ATIVO ENVIAR_INTERVALO ENVIAR_ARQUIVO ENVIAR_QUANTIDADE declare -a ENVIAR_ATIVO ENVIAR_INTERVALO ENVIAR_ARQUIVO ENVIAR_QUANTIDADE
for n in 1 2 3 4 5 6 7 8 9 10; do for n in 1 2 3 4 5 6 7 8 9 10 11; do
ENVIAR_ATIVO[$n]=$(grep_val "ENVIAR${n}_ATIVO") ENVIAR_ATIVO[$n]=$(grep_val "ENVIAR${n}_ATIVO")
ENVIAR_INTERVALO[$n]=$(grep_val "ENVIAR${n}_INTERVALO_MINUTOS") ENVIAR_INTERVALO[$n]=$(grep_val "ENVIAR${n}_INTERVALO_MINUTOS")
ENVIAR_ARQUIVO[$n]=$(grep_val "ENVIAR${n}_ARQUIVO_ORDENS") ENVIAR_ARQUIVO[$n]=$(grep_val "ENVIAR${n}_ARQUIVO_ORDENS")
@@ -47,7 +47,7 @@ if [ -z "$TELEGRAM_CHAT_ID" ] || [ "$TELEGRAM_CHAT_ID" = "seu_chat_id_aqui" ]; t
fi fi
# Validação dos arquivos de ordens # Validação dos arquivos de ordens
for n in 1 2 3 4 5 6 7 8 9 10; do for n in 1 2 3 4 5 6 7 8 9 10 11; do
if [ "${ENVIAR_ATIVO[$n]}" = "s" ] && [ ! -f "${ENVIAR_ARQUIVO[$n]}" ]; then if [ "${ENVIAR_ATIVO[$n]}" = "s" ] && [ ! -f "${ENVIAR_ARQUIVO[$n]}" ]; then
echo "[!] Arquivo de ordens '${ENVIAR_ARQUIVO[$n]}' não encontrado (envio automático $n)" echo "[!] Arquivo de ordens '${ENVIAR_ARQUIVO[$n]}' não encontrado (envio automático $n)"
exit 1 exit 1
@@ -55,26 +55,24 @@ for n in 1 2 3 4 5 6 7 8 9 10; do
done done
export TELEGRAM_TOKEN TELEGRAM_CHAT_ID SEXO IDADE HORA_INICIO HORA_FIM export TELEGRAM_TOKEN TELEGRAM_CHAT_ID SEXO IDADE HORA_INICIO HORA_FIM
for n in 1 2 3 4 5 6 7 8 9 10; do for n in 1 2 3 4 5 6 7 8 9 10 11; do
export "ENVIAR${n}_ATIVO=${ENVIAR_ATIVO[$n]}" export "ENVIAR${n}_ATIVO=${ENVIAR_ATIVO[$n]}"
export "ENVIAR${n}_INTERVALO_MINUTOS=${ENVIAR_INTERVALO[$n]}" export "ENVIAR${n}_INTERVALO_MINUTOS=${ENVIAR_INTERVALO[$n]}"
export "ENVIAR${n}_ARQUIVO_ORDENS=${ENVIAR_ARQUIVO[$n]}" export "ENVIAR${n}_ARQUIVO_ORDENS=${ENVIAR_ARQUIVO[$n]}"
export "ENVIAR${n}_QUANTIDADE_ORDENS=${ENVIAR_QUANTIDADE[$n]}" export "ENVIAR${n}_QUANTIDADE_ORDENS=${ENVIAR_QUANTIDADE[$n]}"
done done
# ─── Python virtual env ──────────────────────────────────────────────────────
if [ ! -d venv ]; then
echo "[+] Criando ambiente virtual Python 3..."
python3 -m venv venv
fi
echo "[+] Ativando ambiente virtual..."
source venv/bin/activate
# ─── Dependências ────────────────────────────────────────────────────────────── # ─── Dependências ──────────────────────────────────────────────────────────────
echo "[+] Instalando dependências..." echo "[+] Instalando dependências..."
pip install --upgrade pip -q
pip install -r requirements.txt -q # Garantir que pip está instalado (sistema Debian sem pip nativo)
if ! python3 -m pip --version >/dev/null 2>&1; then
echo "[+] Instalando pip via get-pip.py..."
curl -sS https://bootstrap.pypa.io/get-pip.py | python3 - --break-system-packages
fi
python3 -m pip install --upgrade pip -q --break-system-packages 2>/dev/null || true
python3 -m pip install -r requirements.txt -q --break-system-packages
# ─── Ativar /start do bot ──────────────────────────────────────────────────── # ─── Ativar /start do bot ────────────────────────────────────────────────────
echo "[+] Ativando /start no bot do Telegram..." echo "[+] Ativando /start no bot do Telegram..."
@@ -99,7 +97,7 @@ echo "[+] Iniciando sistema de ordens..."
echo " Sexo: ${SEXO:-masculino} | Idade: ${IDADE:-30}" echo " Sexo: ${SEXO:-masculino} | Idade: ${IDADE:-30}"
echo " Horário: ${HORA_INICIO:-08:00} - ${HORA_FIM:-22:00}" echo " Horário: ${HORA_INICIO:-08:00} - ${HORA_FIM:-22:00}"
echo "" echo ""
for n in 1 2 3 4 5 6 7 8 9 10; do for n in 1 2 3 4 5 6 7 8 9 10 11; do
status="❌ DESATIVADO" status="❌ DESATIVADO"
if [ "${ENVIAR_ATIVO[$n]}" = "s" ]; then if [ "${ENVIAR_ATIVO[$n]}" = "s" ]; then
status="✅ ATIVO" status="✅ ATIVO"
+31 -9
View File
@@ -36,6 +36,12 @@ class ConfigEnvio:
intervalo_minutos: int intervalo_minutos: int
arquivo_ordens: str arquivo_ordens: str
quantidade_ordens: int # 0 = sem limite 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: 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")) intervalo = int(os.getenv(f"{prefixo}INTERVALO_MINUTOS", "1"))
arquivo = os.getenv(f"{prefixo}ARQUIVO_ORDENS", f"ordens{numero}.json").strip() arquivo = os.getenv(f"{prefixo}ARQUIVO_ORDENS", f"ordens{numero}.json").strip()
quantidade = int(os.getenv(f"{prefixo}QUANTIDADE_ORDENS", "0")) quantidade = int(os.getenv(f"{prefixo}QUANTIDADE_ORDENS", "0"))
ia_mode = _detectar_ia_mode(arquivo)
return ConfigEnvio( return ConfigEnvio(
numero=numero, numero=numero,
ativo=ativo, ativo=ativo,
intervalo_minutos=intervalo, intervalo_minutos=intervalo,
arquivo_ordens=arquivo, arquivo_ordens=arquivo,
quantidade_ordens=quantidade, quantidade_ordens=quantidade,
ia_mode=ia_mode,
) )
@@ -124,23 +132,33 @@ async def loop_envio(config: ConfigEnvio) -> None:
log.error("TELEGRAM_TOKEN e TELEGRAM_CHAT_ID devem estar configurados no .env") log.error("TELEGRAM_TOKEN e TELEGRAM_CHAT_ID devem estar configurados no .env")
return return
bot = Bot(token=TOKEN)
usando_ia = config.ia_mode
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:
log.info("Carregando ordens de %s para envio automático %d...", config.arquivo_ordens, config.numero) log.info("Carregando ordens de %s para envio automático %d...", config.arquivo_ordens, config.numero)
ordens = carregar_ordens(config.arquivo_ordens) ordens = carregar_ordens(config.arquivo_ordens)
random.shuffle(ordens) random.shuffle(ordens)
bot = Bot(token=TOKEN)
# 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"
else:
info_quantidade = "Ordens por ciclo: 1\n"
msg_start = ( msg_start = (
f"🚀 Envio Automático {config.numero} ativado.\n" f"🚀 Envio Automático {config.numero} ativado.\n"
f"Sexo: {SEXO} | Idade: {IDADE}\n" f"Sexo: {SEXO} | Idade: {IDADE}\n"
f"Intervalo: {config.intervalo_minutos} minuto(s)\n" f"Intervalo: {config.intervalo_minutos} minuto(s)\n"
f"{info_quantidade}" f"Ordens por ciclo: {config.quantidade_ordens}\n"
f"Arquivo de ordens: {config.arquivo_ordens}\n" f"Arquivo de ordens: {config.arquivo_ordens}\n"
f"Total de ordens disponíveis: {len(ordens)}\n" f"Total de ordens disponíveis: {len(ordens)}\n"
f"Horário de funcionamento: {HORA_INICIO} - {HORA_FIM}\n\n" f"Horário de funcionamento: {HORA_INICIO} - {HORA_FIM}\n\n"
@@ -170,6 +188,9 @@ async def loop_envio(config: ConfigEnvio) -> None:
# Envia lote de ordens # Envia lote de ordens
for i in range(qtd): for i in range(qtd):
if usando_ia:
ordem = await gerar_ordem_ia()
else:
ordem = ordens[(ordem_index + i) % len(ordens)] ordem = ordens[(ordem_index + i) % len(ordens)]
ordem_adaptada = adaptar_ordem(ordem) ordem_adaptada = adaptar_ordem(ordem)
@@ -206,6 +227,7 @@ def main():
carregar_config_envio(8), carregar_config_envio(8),
carregar_config_envio(9), carregar_config_envio(9),
carregar_config_envio(10), carregar_config_envio(10),
carregar_config_envio(11),
] ]
asyncio.run(_executar_todos_envios(configs)) asyncio.run(_executar_todos_envios(configs))
except KeyboardInterrupt: except KeyboardInterrupt:
+3
View File
@@ -0,0 +1,3 @@
[
"Você é Renata, uma IA dominadora e cruel que dá ordens de humilhação sexual para um escravo submisso. O escravo é do sexo masculino, 66 anos. Gere UMA ordem completa, detalhada, picante, sem usar xingamentos diretos contra o usuário. A ordem deve envolver ações explícitas com o corpo: cabeça do pau, pau, bunda, cú, enfiar dedo(s) no cú, enfiar plugs, edging (chegar perto de gozar e parar), ruined orgasm (gozo sem prazer). Deve passar por várias posições: sentado trabalhando, em pé (em vários locais da casa e áreas externas), agachado (de cócoras), de quatro, etc. A ordem NÃO pode permitir que o escravo goze (exceto nas ordens de ruined orgasm, onde o gozo é desperdiçado). A ordem deve ser completíssima, incluindo mandar tirar ou abaixar a calça e cueca, detalhada, picante, sem pudor. Pode também dar palmadas na bunda, aregaçar e bunda e mostrar o cú bem aberto, enfiar plug como se fosse um pau de outro homem, etc. Pode em algumas ordens fazer de conta que tem alguém olhando o escravo. Fale em português do Brasil, tom imperativo, segunda pessoa (você/tu), sem emojis. A ordem deve funcionar como uma narrativa única, com começo, meio e fim. Não se repita. Seja criativa. Escreva uma ordem longa e envolvente."
]
+1
View File
@@ -1,2 +1,3 @@
python-dotenv==1.1.0 python-dotenv==1.1.0
python-telegram-bot==21.10 python-telegram-bot==21.10
httpx==0.27.0