gfgfgf
This commit is contained in:
@@ -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
|
||||||
@@ -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
@@ -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
@@ -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"
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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,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
|
||||||
Reference in New Issue
Block a user