From bbb47ad1be59337b0efe83b7d7a761f057bed6b1 Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 9 Sep 2026 11:10:28 -0300 Subject: [PATCH] fddfdfd --- .env | 3 +++ .env.example | 4 ++++ DEPLOY.md | 1 + __pycache__/main.cpython-311.pyc | Bin 10649 -> 11072 bytes iniciar.sh | 10 ++++++-- main.py | 39 ++++++++++++++++++++----------- 6 files changed, 42 insertions(+), 15 deletions(-) mode change 100755 => 100644 __pycache__/main.cpython-311.pyc diff --git a/.env b/.env index 5dd950e..76b71fd 100755 --- a/.env +++ b/.env @@ -10,16 +10,19 @@ IDADE=65 ENVIAR1_ATIVO=s ENVIAR1_INTERVALO_MINUTOS=1 ENVIAR1_ARQUIVO_ORDENS=ordens1.json +ENVIAR1_QUANTIDADE_ORDENS=2 # ═══ Envio Automático 2 ═════════════════════════════════════════════ ENVIAR2_ATIVO=s ENVIAR2_INTERVALO_MINUTOS=1 ENVIAR2_ARQUIVO_ORDENS=ordens2.json +ENVIAR2_QUANTIDADE_ORDENS=2 # ═══ Envio Automático 3 ═════════════════════════════════════════════ ENVIAR3_ATIVO=s ENVIAR3_INTERVALO_MINUTOS=1 ENVIAR3_ARQUIVO_ORDENS=ordens3.json +ENVIAR3_QUANTIDADE_ORDENS=2 # ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════ HORA_INICIO=08:00 diff --git a/.env.example b/.env.example index 6ce8a64..e4a3af5 100755 --- a/.env.example +++ b/.env.example @@ -15,16 +15,20 @@ IDADE=30 ENVIAR1_ATIVO=s ENVIAR1_INTERVALO_MINUTOS=1 ENVIAR1_ARQUIVO_ORDENS=ordens1.json +# Quantidade de ordens enviadas POR CICLO (1 = uma por ciclo, 3 = três de uma vez a cada intervalo) +ENVIAR1_QUANTIDADE_ORDENS=1 # ═══ Envio Automático 2 ═════════════════════════════════════════════ ENVIAR2_ATIVO=s ENVIAR2_INTERVALO_MINUTOS=1 ENVIAR2_ARQUIVO_ORDENS=ordens2.json +ENVIAR2_QUANTIDADE_ORDENS=1 # ═══ Envio Automático 3 ═════════════════════════════════════════════ ENVIAR3_ATIVO=s ENVIAR3_INTERVALO_MINUTOS=1 ENVIAR3_ARQUIVO_ORDENS=ordens3.json +ENVIAR3_QUANTIDADE_ORDENS=1 # ═══ Horário de funcionamento (formato HH:MM, 24h) ═══════════════════ HORA_INICIO=08:00 diff --git a/DEPLOY.md b/DEPLOY.md index 9557d47..f645e6d 100755 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -39,6 +39,7 @@ Para cada um dos 3 envios automáticos independentes: | `ENVIAR{n}_ATIVO` | `s` = ativado, qualquer outro valor = desativado | | `ENVIAR{n}_INTERVALO_MINUTOS` | Intervalo em minutos entre ordens | | `ENVIAR{n}_ARQUIVO_ORDENS` | Caminho do arquivo JSON com as ordens | +| `ENVIAR{n}_QUANTIDADE_ORDENS` | Quantidade de ordens enviadas **por ciclo** de intervalo (1 = uma por ciclo; 3 = três de uma vez a cada intervalo) | Exemplo para o envio 1: diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc old mode 100755 new mode 100644 index 46f3330abf8f495af3142c9c251072f5337d2a58..6a1a66baa397bfc29ed736710a995a3351e8c605 GIT binary patch delta 2933 zcmZuzU2NOd6(%K-)W5A?+p=Z-S+-@zf9bj`wzEd@Pm+3Zmd43YWU0W4v@ORHol81P zTnWxYi>h6Krn^~?Z1dotL*`}~*1~((Fkr}#J?w3EAYcN40N#KB>xKa|RzIxR!_K87 z+jVn9emv*gqr=0)d%w&3=bv13{@mfPQXuKs2XjNAPn{tXeFFEIj?{}r(Iha#FeI?& zsRW0wm|n4~uB(fDPRR(oAmWcqIricO#ttd9=RF z4AVvnMd8(`7ypE*W2`F%!G@2s!ERQuK}=QhRNk03<(WMD*#3~As9(TY5vam}|He-A zs;+Yvl9N-XN0Xytsk5(*j!m9d>HY+Rd=QBI1R4l55@^E5xv(urR4)K|5bkh5weCHL zOsWi51jX!>LYdO%S*;qTfO#ysPK%-cOg{Is$zY`rK$qh>ufe+8j^Ep98q{|6| z%2v&x_2U-W(0>ZN$VuQ;0Gad=ibOHEst#V@7Ze_)BqWGgbOwAE@KxI=8wCv=S^u5w z9h&aPNyo_G5faa(`D`XPE2;D}>H&vr0w9lENmrNV5fW#r`EoM41jCotfA7c|{NDu? zT?SBTajyuRtoJdq;GJ2&RQ~}T)T?p{VopI)N{~{s65>%tLOBRoz?^%Wj^aso#L&gA zUv>YKUd~f<4j9r!Fkd0%P{=M=_WOTK3Dy;3!IXoEQZNa27$Z&41;!i-dBIfy+o`nF zEQ$iV4&v)-9IjVMVaJZESb~OaP0jftK?W+pdUZt&O=^1@1o&uwE?D_JB zJcGBLK?j*ERhjeQ0iPdVr2SsO|B!|m3};0OtkU-bLnA)vi@O@~?EbqcZMfhI(v6t* zc=4}%j)}%R3l%i&j{!SyprYmjJ!v@*A6&6LZiNb4%tENZS*XhW-}T2`k^PY*D^7Wu z8eXcEN>Ouxnl40fvN8CbZ^ON6eWQd>^__A1y*XMi7t9Koa#hKjzubaR>hk*qOP^`SQWD5s*<;U`9B4l^1}X33$X)%tk70VESO1pXj%L~i`wLC20YhS}Tnt@cD0<{P&Te?}(3lKU(y z*PI+)kWe_CNzY4z;V)?GlJ~3b0V_^6op##7uxu9(3t~G7SYoOolifK5@9iSEdxwJ#vxM3@Cu)WB`V_1KsP;yrvksFQ`ply z-ufA#pe1Kq=!<9j;;)C}rv~F^mN-JLXTmZ3z2=iW!3whq5Qszqgl$!3>g>eWBuW#< zGy$D-FX4YRhnAa&P1>u|v1*(bbI3(ZHvvK(h^%{bg}^)k!WQUF0F~qA8@Y5wQW<$( z6c$U;|#X8MowtQ{1 z{bxNI1&R*OT|UjYYed@jj4gjl$=|CnwLy)g?9CdtYnrK0ywv)VW-*UfbM08EuAa4v zA2&a4)@-%79Xr)=Saa+%kG!&HRthmvjC0422U`DY)$EkVdviiF1n?W7$z`}{_du!Z z#FKN+y2dxU#*5P>XZwb;{ZGlFafhYc4Y%bF19t)%<*@YXP)wG+fqN5ck^5(VDSz_y zkKcOy)@Jiy$vadWdmijsdwDZBPznwdC;#qkx$~_LC+|%D#oPVN+r4pUc+-2VZ`C#e4i88Hc|%L z+fAB*1l2oeb~OgmmS)$w^~*tM!*6%~sB@gAhwfd{C~{q!s$5@yQ}}q|f{B#*f4D%q AZ~y=R delta 2478 zcma)8U2Gdg5Z<%z{O_|9|0i~0JHJlqG)a>tp@FJ2X;nok(1sR>XzKbL*J*5ry)z2I zp#@P?q*k=uKBS8ZmGXkBN<3Vo=Apm?v*$QTO_5mL zeLFKdJ2yMKGkbTBT|dfyZZ;bbw2`qJ<8{7o_*$0fC2eevM&OR3kcMQ~z2pZr&h(R= zT%T@R;Nu7_@Mtuh8cW1SW2rY2Y1|EC z&G3rflL_6edZTm2;#lErD^+zXt{Pd-nKWw%;1LBGahwL+AJLx=?uI!b)wEuS_~R3i zln}$cilm^~V0&^Z1EXpm04e4v8~_m20N_;7C38fGOiJKU8Vj)`J_KV&$S%`>CP4MO zaxPMRS(T6;gXC5g&))*K+6hq^kWD zAn~gJ1t#{S6BZf=@F58^B5`m-04*WstN4gvg5;}87dH-qB>AcG023fqTR`;(m)m9g zlo=LuSu{=;q_j_vpqJbw4k6$TQq>c@5%g&&lm_D_;I-R$vs6o7clZW*$zPHxb}SOz z!Hov;p)KJnuD67h{WX3imki&fOcda0x2 z1w!MV61{zeLN(dr@#_Tdj7E=&j)q+gmYVG*!Oe)P+VxahFn_PdYqQ3;ksp-zcieO3o!4cnIp zeB+#PMqjpxdK#fN#h@9X8O{HV6?^eRV|lHlW{#aBxX`#e=N-!RQ&9H(%a z0!=x5g1qaqJ*$+3kO7~eBAWG>=5j$3!BQfgF6fhDd{l%YBH;v;82ns2-rmJtvN+^=xR>P;rl zxW%kGy?JMw%#{XZ4XSO(*X)wDCCR!DwS*UreNnwwE$cUh2GrCk8@I7NdpFns6`D|6 zS3W!_n@bu+U(|@>*X`uH+Q(h%CStTl+3>GRv9+m(R@ayONd>kP0k}Ehe|P6^mU~mxfj?KA9^q5Sn0f{`o+k ztlbnTM$|~puUnC&W;QzCz08O5d}vAclxJ0EyZpwo&Q18>4z1kk;P$|cv@dwiNp~=$ zDyZ7p3rtj0Df^9sq^houxlM-aI`#(?1v~{E+)@$gbPR_Wd=^-d9^s8!#5o$9ibXT@ zT9VR2S}dLq5q|(G-;y8e_A`N;sXoInB6+W2P@q+#Xi|+cDMhPLF%*02R62r%Ln$eS zab{A&C#f3EiGqG`DjJ)V66utZ4I!1{0gl4hrqfi9O-2$adk*)Em_mla z6zORa&(Z=`wB1H2iGq@7J1Nyp0SX7g%HM&7QWX>`DbSw<<@(15DFt;ADY;f)ClaEh zT%O8Zh->JGl94pT$`Td7u%BK_n1)r!r$2T5$+VD}h&_jAK}KULKFAFJ+g`_@kT~7Une8z7Fw0A9Q>rA<>TOU%%0g189}!&taRltKpwQb I%u)yc0n0Trn*aa+ diff --git a/iniciar.sh b/iniciar.sh index e07f570..d90a16a 100755 --- a/iniciar.sh +++ b/iniciar.sh @@ -29,11 +29,12 @@ HORA_INICIO=$(grep_val HORA_INICIO) HORA_FIM=$(grep_val HORA_FIM) # Configuração de cada envio automático -declare -a ENVIAR_ATIVO ENVIAR_INTERVALO ENVIAR_ARQUIVO +declare -a ENVIAR_ATIVO ENVIAR_INTERVALO ENVIAR_ARQUIVO ENVIAR_QUANTIDADE for n in 1 2 3; do ENVIAR_ATIVO[$n]=$(grep_val "ENVIAR${n}_ATIVO") ENVIAR_INTERVALO[$n]=$(grep_val "ENVIAR${n}_INTERVALO_MINUTOS") ENVIAR_ARQUIVO[$n]=$(grep_val "ENVIAR${n}_ARQUIVO_ORDENS") + ENVIAR_QUANTIDADE[$n]=$(grep_val "ENVIAR${n}_QUANTIDADE_ORDENS") done if [ -z "$TELEGRAM_TOKEN" ] || [ "$TELEGRAM_TOKEN" = "seu_token_aqui" ]; then @@ -58,6 +59,7 @@ for n in 1 2 3; do export "ENVIAR${n}_ATIVO=${ENVIAR_ATIVO[$n]}" export "ENVIAR${n}_INTERVALO_MINUTOS=${ENVIAR_INTERVALO[$n]}" export "ENVIAR${n}_ARQUIVO_ORDENS=${ENVIAR_ARQUIVO[$n]}" + export "ENVIAR${n}_QUANTIDADE_ORDENS=${ENVIAR_QUANTIDADE[$n]}" done # ─── Python virtual env ────────────────────────────────────────────────────── @@ -102,8 +104,12 @@ for n in 1 2 3; do if [ "${ENVIAR_ATIVO[$n]}" = "s" ]; then status="✅ ATIVO" fi + qtd_info="sem limite" + if [ "${ENVIAR_QUANTIDADE[$n]}" -gt 0 ] 2>/dev/null; then + qtd_info="${ENVIAR_QUANTIDADE[$n]} ordens" + fi echo " Envio Automático $n: $status" - echo " Intervalo: ${ENVIAR_INTERVALO[$n]:-1} min | Arquivo: ${ENVIAR_ARQUIVO[$n]:-ordens${n}.json}" + echo " Intervalo: ${ENVIAR_INTERVALO[$n]:-1} min | Qtd: $qtd_info | Arquivo: ${ENVIAR_ARQUIVO[$n]:-ordens${n}.json}" done echo "" echo "Pressione Ctrl+C para parar." diff --git a/main.py b/main.py index dcdf6ff..0979ebc 100755 --- a/main.py +++ b/main.py @@ -35,6 +35,7 @@ class ConfigEnvio: ativo: bool intervalo_minutos: int arquivo_ordens: str + quantidade_ordens: int # 0 = sem limite def carregar_config_envio(numero: int) -> ConfigEnvio: @@ -43,11 +44,13 @@ def carregar_config_envio(numero: int) -> ConfigEnvio: ativo = ativo_raw == "s" 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")) return ConfigEnvio( numero=numero, ativo=ativo, intervalo_minutos=intervalo, arquivo_ordens=arquivo, + quantidade_ordens=quantidade, ) @@ -129,14 +132,19 @@ async def loop_envio(config: ConfigEnvio) -> None: # 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 = ( 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 primeira ordem será enviada em {config.intervalo_minutos} minuto(s).\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) @@ -157,21 +165,26 @@ async def loop_envio(config: ConfigEnvio) -> None: await asyncio.sleep(60) continue - ordem = ordens[ordem_index % len(ordens)] - ordem_adaptada = adaptar_ordem(ordem) + # Quantidade de ordens a enviar neste ciclo + qtd = config.quantidade_ordens if config.quantidade_ordens > 0 else 1 - agora = datetime.now().strftime("%d/%m/%Y %H:%M") - texto = ( - f"ORDEM #{ordem_index + 1} [Env. {config.numero}]\n" - f"{agora}\n\n" - f"{ordem_adaptada}\n\n" - f"Próxima ordem em {config.intervalo_minutos} minuto(s)." - f"\n\nCumpra agora." - ) + # Envia lote de ordens + for i in range(qtd): + ordem = ordens[(ordem_index + i) % len(ordens)] + ordem_adaptada = adaptar_ordem(ordem) - await enviar_mensagem(bot, texto) + agora = datetime.now().strftime("%d/%m/%Y %H:%M") + texto = ( + f"ORDEM #{ordem_index + i + 1} [Env. {config.numero}]\n" + f"{agora}\n\n" + f"{ordem_adaptada}\n\n" + f"Próxima ordem em {config.intervalo_minutos} minuto(s)." + f"\n\nCumpra agora." + ) - ordem_index += 1 + await enviar_mensagem(bot, texto) + + ordem_index += qtd await asyncio.sleep(config.intervalo_minutos * 60)