Add complete Flask web application with Telegram bot integration, multiple AI provider support (llama.cpp, OpenRouter, z.ai, StepFun), extensive order banks for BDSM-themed gameplay, automated cron scheduling, and responsive web UI with inference parameter controls.
129 lines
4.7 KiB
Python
Executable File
129 lines
4.7 KiB
Python
Executable File
"""Gerador de Cenário Completo — combina múltiplos elementos aleatórios.
|
|
|
|
Diferente das ordens tradicionais que focam em um único tema, o Cenário
|
|
Completo sorteia 6 componentes independentes (local, posição, acessório,
|
|
duração, ação, regra) e monta uma ordem imersiva que combina tudo.
|
|
"""
|
|
|
|
import random
|
|
|
|
# ── Componentes do cenário ──────────────────────────────────────────────────
|
|
|
|
LOCAIS = [
|
|
"na cozinha, encostado na pia",
|
|
"na sala, de frente para a janela",
|
|
"no quarto, em cima da cama desfeita",
|
|
"no banheiro, dentro do box",
|
|
"na área de serviço, perto da máquina de lavar",
|
|
"na varanda, à mostra para vizinhos",
|
|
"no escritório, ao lado do computador",
|
|
"no corredor, de joelhos",
|
|
"na sala de jantar, embaixo da mesa",
|
|
"no quintal, sob a luz do luar",
|
|
"na garagem, com a porta aberta",
|
|
"no sofá da sala, pelado e exposto",
|
|
]
|
|
|
|
POSICOES = [
|
|
"de quatro, com a bunda bem levantada",
|
|
"em pé, com as mãos na nuca e pernas abertas",
|
|
"sentado, com as pernas bem abertas",
|
|
"deitado de bruços, com um travesseiro sob o quadril",
|
|
"deitado de costas, com as pernas levantadas e abertas",
|
|
"agachado, com os joelhos afastados",
|
|
"ajoelhado, com as mãos para trás",
|
|
"em pé, curvado para frente, mãos nos joelhos",
|
|
"de lado, com a perna de cima levantada",
|
|
"de quatro, com o peito no chão e a bunda para cima",
|
|
]
|
|
|
|
ACESSORIOS = [
|
|
"com o plug de metal enfiado no cú",
|
|
"com o plug de próstata vibrando dentro",
|
|
"com o masturbador ovo no pau",
|
|
"com o vibrador ligado no talo",
|
|
"com os dedos lubrificados enfiados no cú",
|
|
"com uma vela acesa ao lado (cuidado com a cera)",
|
|
"com gelo se derretendo na boca",
|
|
"com a cueca na boca como mordaça",
|
|
"com as mãos amarradas com uma gravata",
|
|
"com o pau enfiado num lubrificante gelado",
|
|
"com o plug fixo médio bem enfiado",
|
|
"com os mamilos presos por pregadores",
|
|
"sem acessório — apenas sua pele e sua vergonha",
|
|
]
|
|
|
|
DURACOES = [
|
|
"5 minutos", "10 minutos", "15 minutos",
|
|
"20 minutos", "25 minutos", "30 minutos",
|
|
"45 minutos", "1 hora",
|
|
]
|
|
|
|
ACOES = [
|
|
"bater punheta lentamente, sem pressa",
|
|
"se masturbar olhando para o próprio reflexo",
|
|
"fazer edging — chegar ao limite e parar 3 vezes",
|
|
"se exibir para a janela, mostrando tudo",
|
|
"se tocar inteiro, da cabeça aos pés",
|
|
"contrair e relaxar o cu em ritmo constante",
|
|
"se lamber onde alcançar, como um animal",
|
|
"se espreguiçar e gemer, mostrando prazer",
|
|
"mexer no pau sem tirar os olhos do teto",
|
|
"esfregar o pau na própria coxa",
|
|
"bater na própria bunda até ficar vermelha",
|
|
"se filmar com o celular e se assistir depois",
|
|
"falar em voz alta o que está sentindo",
|
|
"contrair o cu em volta do plug 50 vezes",
|
|
]
|
|
|
|
REGRAS = [
|
|
"sem gozar. O gozo não é seu, é do Mestre.",
|
|
"pode gozar no final, mas peça permissão primeiro.",
|
|
"sem tirar o plug, custe o que custar.",
|
|
"de olhos vendados — a escuridão amplifica o prazer.",
|
|
"em silêncio absoluto — nem um gemido.",
|
|
"olhando fixamente para um ponto na parede.",
|
|
"sem usar as mãos no pau — só o plug e a imaginação.",
|
|
"de joelhos — levantar é proibido durante a cena.",
|
|
"cronometrando — se parar antes, recomeça do zero.",
|
|
"com a porta aberta — qualquer um pode ver.",
|
|
]
|
|
|
|
# ── Gerador principal ───────────────────────────────────────────────────────
|
|
|
|
|
|
def gerar_cenario_completo():
|
|
"""Gera um cenário completo combinando 6 elementos aleatórios.
|
|
|
|
Returns:
|
|
str: Ordem imersiva com local, posição, acessório, duração,
|
|
ação e regra.
|
|
"""
|
|
local = random.choice(LOCAIS)
|
|
posicao = random.choice(POSICOES)
|
|
acessorio = random.choice(ACESSORIOS)
|
|
duracao = random.choice(DURACOES)
|
|
acao = random.choice(ACOES)
|
|
regra = random.choice(REGRAS)
|
|
|
|
linhas = [
|
|
"═" * 48,
|
|
" 🎪 CENÁRIO COMPLETO DO MESTRE",
|
|
"═" * 48,
|
|
"",
|
|
f"📍 LOCAL: {local.upper()}",
|
|
f"🧘 POSIÇÃO: {posicao.upper()}",
|
|
f"🔧 ACESSÓRIO: {acessorio.upper()}",
|
|
f"⏱️ DURAÇÃO: {duracao.upper()}",
|
|
f"🎯 AÇÃO: {acao.upper()}",
|
|
"",
|
|
"─" * 48,
|
|
" INSTRUÇÃO:",
|
|
f" Vá até {local}. Fique {posicao}, {acessorio}.",
|
|
f" Durante {duracao}, {acao}.",
|
|
f" {regra}",
|
|
"",
|
|
f" [REGRA] {regra}",
|
|
"═" * 48,
|
|
]
|
|
return "\n".join(linhas) |