forked from zovos/bot_tg
Merge pull request 'Ебать у меня идеи, а вы и дальше говорите что алкоголь вреден...........7' (#3) from jeffrey228/bot_tg:main into main
Reviewed-on: zovos/bot_tg#3
This commit is contained in:
commit
091022facc
1 changed files with 79 additions and 0 deletions
79
main.py
79
main.py
|
|
@ -293,6 +293,79 @@ def parse_up_down(text: str) -> tuple[str, str]:
|
||||||
down = parts[1].strip()
|
down = parts[1].strip()
|
||||||
return up, down
|
return up, down
|
||||||
|
|
||||||
|
def minutes_until_next_lesson(now: datetime | None = None) -> str:
|
||||||
|
import random
|
||||||
|
|
||||||
|
if now is None:
|
||||||
|
now = datetime.now(ZoneInfo(DEFAULT_TZ))
|
||||||
|
elif now.tzinfo is None:
|
||||||
|
now = now.replace(tzinfo=ZoneInfo(DEFAULT_TZ))
|
||||||
|
|
||||||
|
LESSON_DAYS = [1, 3] # 1 = вторник, 3 = четверг
|
||||||
|
LESSON_START = time(9, 50)
|
||||||
|
LESSON_END = time(11, 25)
|
||||||
|
|
||||||
|
day = now.weekday()
|
||||||
|
|
||||||
|
def lesson_start_for(day_offset: int) -> datetime:
|
||||||
|
target = now + timedelta(days=day_offset)
|
||||||
|
return target.replace(
|
||||||
|
hour=LESSON_START.hour,
|
||||||
|
minute=LESSON_START.minute,
|
||||||
|
second=0,
|
||||||
|
microsecond=0
|
||||||
|
)
|
||||||
|
|
||||||
|
def lesson_end_today() -> datetime:
|
||||||
|
return now.replace(
|
||||||
|
hour=LESSON_END.hour,
|
||||||
|
minute=LESSON_END.minute,
|
||||||
|
second=0,
|
||||||
|
microsecond=0
|
||||||
|
)
|
||||||
|
|
||||||
|
# ---- Проверяем: сейчас внутри пары? ----
|
||||||
|
if day in LESSON_DAYS:
|
||||||
|
start_today = lesson_start_for(0)
|
||||||
|
end_today = lesson_end_today()
|
||||||
|
|
||||||
|
if start_today <= now < end_today:
|
||||||
|
# ищем следующую пару (не сегодняшнюю)
|
||||||
|
for i in range(1, 8):
|
||||||
|
next_day = (day + i) % 7
|
||||||
|
if next_day in LESSON_DAYS:
|
||||||
|
next_dt = lesson_start_for(i)
|
||||||
|
break
|
||||||
|
|
||||||
|
delta = next_dt - now
|
||||||
|
total_seconds = int(delta.total_seconds())
|
||||||
|
days = total_seconds // 86400
|
||||||
|
hours = (total_seconds % 86400) // 3600
|
||||||
|
minutes = (total_seconds % 3600) // 60
|
||||||
|
|
||||||
|
percent = random.randint(0, 100)
|
||||||
|
|
||||||
|
return (
|
||||||
|
f"Сегодня твой мозг сгнил на {percent}%\n"
|
||||||
|
f"Мозг начнет догнивать через {days} дн {hours} ч {minutes} мин"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ---- Ищем ближайшую будущую пару ----
|
||||||
|
for i in range(0, 8):
|
||||||
|
next_day = (day + i) % 7
|
||||||
|
if next_day in LESSON_DAYS:
|
||||||
|
candidate = lesson_start_for(i)
|
||||||
|
if candidate > now:
|
||||||
|
delta = candidate - now
|
||||||
|
break
|
||||||
|
|
||||||
|
total_seconds = int(delta.total_seconds())
|
||||||
|
days = total_seconds // 86400
|
||||||
|
hours = (total_seconds % 86400) // 3600
|
||||||
|
minutes = (total_seconds % 3600) // 60
|
||||||
|
|
||||||
|
return f"Твой мозг окончательно сгниет, а очко порвется через: {days} дн {hours} ч {minutes} мин"
|
||||||
|
|
||||||
|
|
||||||
async def handle_start(message: Message):
|
async def handle_start(message: Message):
|
||||||
await message.answer("Соси")
|
await message.answer("Соси")
|
||||||
|
|
@ -478,6 +551,10 @@ async def handle_fetch(message: Message):
|
||||||
except Exception:
|
except Exception:
|
||||||
await message.answer("unable to connect x-server гандон")
|
await message.answer("unable to connect x-server гандон")
|
||||||
|
|
||||||
|
async def handle_zvetok(message: Message):
|
||||||
|
result = minutes_until_next_lesson()
|
||||||
|
await message.answer(result)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
token = os.getenv("BOT_TOKEN")
|
token = os.getenv("BOT_TOKEN")
|
||||||
|
|
@ -499,6 +576,7 @@ def main():
|
||||||
BotCommand(command="size", description="хуй"),
|
BotCommand(command="size", description="хуй"),
|
||||||
BotCommand(command="prices", description="цены x-server"),
|
BotCommand(command="prices", description="цены x-server"),
|
||||||
BotCommand(command="fetch", description="цены (новый источник)"),
|
BotCommand(command="fetch", description="цены (новый источник)"),
|
||||||
|
BotCommand(command="zvetok", description="Цветянский бля"),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
except Exception: # noqa: WPS440
|
except Exception: # noqa: WPS440
|
||||||
|
|
@ -513,6 +591,7 @@ def main():
|
||||||
dp.message.register(handle_size, Command("size"))
|
dp.message.register(handle_size, Command("size"))
|
||||||
dp.message.register(handle_prices, Command("prices"))
|
dp.message.register(handle_prices, Command("prices"))
|
||||||
dp.message.register(handle_fetch, Command("fetch"))
|
dp.message.register(handle_fetch, Command("fetch"))
|
||||||
|
dp.message.register(handle_zvetok, Command("zvetok"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue