51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
import os
|
|
import asyncio
|
|
import logging
|
|
|
|
from config import Config
|
|
from modules.stars_bot import TelegramStarsBot
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def setup_logging():
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
|
|
handlers=[
|
|
logging.FileHandler("logs/bot.log", encoding="utf-8"),
|
|
logging.StreamHandler(),
|
|
],
|
|
)
|
|
|
|
|
|
async def main():
|
|
try:
|
|
config = Config()
|
|
stars_bot = TelegramStarsBot(config)
|
|
|
|
await stars_bot.start()
|
|
|
|
except (ValueError, TypeError) as e:
|
|
logger.critical(f"Ошибка в конфигурации или при запуске: {e}")
|
|
raise
|
|
|
|
except Exception as e:
|
|
logger.critical(f"Фатальная ошибка при запуске бота: {e}")
|
|
raise
|
|
|
|
|
|
if __name__ == "__main__":
|
|
os.makedirs("logs", exist_ok=True)
|
|
setup_logging()
|
|
|
|
try:
|
|
asyncio.run(main())
|
|
|
|
except KeyboardInterrupt:
|
|
logger.info("Получен сигнал остановки, бот завершает работу")
|
|
|
|
except Exception:
|
|
logger.exception("Бот завершился из-за необработанной ошибки")
|
|
raise
|