Первый коммит

This commit is contained in:
admin
2025-08-30 08:04:00 +07:00
parent 8a41f6fd89
commit 612acdeb20
5 changed files with 59 additions and 12 deletions

4
.gitignore vendored
View File

@@ -66,3 +66,7 @@ htmlcov/
.nox/ .nox/
.pytest_cache/ .pytest_cache/
.mypy_cache/ .mypy_cache/
test/
tests/
Test/
Tests/

View File

@@ -1,2 +1,3 @@
from .core import * from .core import *
from .handlers import * from .handlers import *
from .middlewares import *

View File

@@ -1,5 +1,4 @@
from datetime import datetime from datetime import datetime
from time import sleep
from aiogram import Bot, Dispatcher from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties from aiogram.client.default import DefaultBotProperties
@@ -202,7 +201,7 @@ class BotInfo:
@staticmethod @staticmethod
def start_info_out() -> str: def start_info_out(out: bool = True) -> str:
bot_time: str = f"Бот @{BotInfo.username} запущен в {datetime.now().strftime("%S:%M:%H %d-%m-%Y")}\n" bot_time: str = f"Бот @{BotInfo.username} запущен в {datetime.now().strftime("%S:%M:%H %d-%m-%Y")}\n"
bot_name: str = f"Основное имя: {BotInfo.first_name}\n" bot_name: str = f"Основное имя: {BotInfo.first_name}\n"
bot_postname: str = f" Доп. имя: {BotInfo.last_name}\n" bot_postname: str = f" Доп. имя: {BotInfo.last_name}\n"
@@ -221,9 +220,9 @@ class BotInfo:
f"{bot_added_to_attachment_menu} {bot_supports_inline_queries} {bot_can_connect_to_business} " f"{bot_added_to_attachment_menu} {bot_supports_inline_queries} {bot_can_connect_to_business} "
f"{bot_has_main_web_app}") f"{bot_has_main_web_app}")
# Печатаем все данные в консоль с задержкой в 1 секунду # Печатаем все данные в консоль
sleep(1) if out:
print(f"\033[34m{bot_all_info}\033[0m") print(f"\033[34m{bot_all_info}\033[0m")
# Записываем информацию в файл # Записываем информацию в файл
try: try:
@@ -257,4 +256,3 @@ class BotInfo:
await cls.set_description(bots=bots) await cls.set_description(bots=bots)
await cls.set_short_description(bots=bots) await cls.set_short_description(bots=bots)
await cls.set_name(bots=bots) await cls.set_name(bots=bots)
cls.start_info_out()

44
count.py Normal file
View File

@@ -0,0 +1,44 @@
from pathlib import Path
from typing import Dict
def count_python_lines(project_path: str = ".", exclude: str = ".venv") -> Dict[str, int]:
"""
Подсчитывает количество строк кода во всех Python (.py) файлах проекта.
Args:
project_path (str): Путь к директории проекта. По умолчанию — текущая папка.
exclude (str): Имя директории, которую нужно исключить (например, .venv).
Returns:
Dict[str, int]: Словарь с двумя ключами:
- "files": количество найденных файлов .py
- "lines": общее количество строк во всех .py файлах
"""
root: Path = Path(project_path)
total_lines: int = 0
file_count: int = 0
# Рекурсивный обход всех файлов
for file_path in root.rglob("*.py"):
# Игнорируем .venv и любые подпапки внутри него
if exclude in file_path.parts:
continue
try:
with file_path.open("r", encoding="utf-8") as f:
# Считаем количество строк в файле
line_count = sum(1 for _ in f)
total_lines += line_count
file_count += 1
except (UnicodeDecodeError, PermissionError):
# Иногда могут встретиться битые файлы или без прав доступа
continue
return {"files": file_count, "lines": total_lines}
if __name__ == "__main__":
stats = count_python_lines()
print(f"📊 Найдено файлов: {stats['files']}")
print(f"📄 Всего строк кода: {stats['lines']}")

12
main.py
View File

@@ -1,10 +1,8 @@
from asyncio import run from asyncio import run
from bot import BotInfo, bot, dp, router
from bot.core import server
from bot.middlewares import setup_middlewares
from database import db
from configs import Webhook from configs import Webhook
from database import db
from bot import BotInfo, bot, dp, router, server, setup_middlewares
from middleware.loggers import setup_logging, loggers from middleware.loggers import setup_logging, loggers
@@ -40,11 +38,13 @@ async def main() -> None:
# Выбор режима работы: webhook или polling # Выбор режима работы: webhook или polling
if Webhook.WEBHOOK: if Webhook.WEBHOOK:
loggers.info(f"Запуск бота @{BotInfo.username} в режиме вебхука...\n") loggers.info(f"Запуск бота @{BotInfo.username} в режиме webhook...")
BotInfo.start_info_out()
await server.serve() await server.serve()
else: else:
loggers.info(f"Бот @{BotInfo.username} запущен в режиме polling...\n") loggers.info(f"Бот @{BotInfo.username} запущен в режиме polling...")
BotInfo.start_info_out()
await dp.start_polling(bot) await dp.start_polling(bot)
except Exception as e: except Exception as e: