Короче опять дохуя изменений:
1. Оно перво на перво работает 2.Реализовано почти всё вроде из кнопок, осталось ток оплату подписок, выдачу URI и пополнение конечно. 3.Убрал .json конфиг и сделал всё через переменные окружения
This commit is contained in:
38
main.py
38
main.py
@@ -1,48 +1,72 @@
|
||||
import os
|
||||
import asyncio
|
||||
from aiogram import Bot, Dispatcher
|
||||
from databases.db_config import init_postgresql, init_mongodb, close_connections
|
||||
from aiogram.types import BotCommand
|
||||
from utils.LogCon import setup_logger, load_config
|
||||
from Middleware.anti_spam_middleware import AntiSpamMiddleware
|
||||
import logging
|
||||
|
||||
|
||||
setup_logger()
|
||||
logger = logging.getLogger(__name__)
|
||||
# Получение токена бота из переменных окружения
|
||||
BOT_TOKEN = os.getenv("TOKEN")
|
||||
|
||||
BOT_TOKEN = load_config()['token']
|
||||
if not BOT_TOKEN:
|
||||
raise ValueError("Не задан токен бота. Убедитесь, что переменная окружения 'TOKEN' установлена.")
|
||||
|
||||
bot = Bot(token=BOT_TOKEN)
|
||||
dp = Dispatcher()
|
||||
|
||||
# Установка middleware для защиты от спама
|
||||
dp.message.middleware(AntiSpamMiddleware(rate_limit=1))
|
||||
|
||||
|
||||
async def set_commands():
|
||||
"""Устанавливает команды для бота."""
|
||||
commands = [
|
||||
BotCommand(command="/start", description="Запустить бота"),
|
||||
]
|
||||
await bot.set_my_commands(commands)
|
||||
|
||||
|
||||
async def on_startup():
|
||||
"""Действия при запуске бота."""
|
||||
# Инициализация баз данных
|
||||
await init_mongodb()
|
||||
await init_postgresql()
|
||||
|
||||
# Установка команд бота
|
||||
await set_commands()
|
||||
print("Бот запущен!")
|
||||
|
||||
# Настройка логирования
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info("Бот запущен!")
|
||||
|
||||
|
||||
async def on_shutdown():
|
||||
"""Действия при остановке бота."""
|
||||
# Закрытие подключений к базам данных
|
||||
await close_connections()
|
||||
|
||||
# Закрытие сессии бота
|
||||
await bot.session.close()
|
||||
print("Бот остановлен.")
|
||||
|
||||
|
||||
async def main():
|
||||
"""Основной цикл работы бота."""
|
||||
from handlers.handlers import register_handlers
|
||||
register_handlers(dp)
|
||||
await init_postgresql() # Убедитесь, что таблицы создаются здесь
|
||||
register_handlers(dp) # Регистрация хендлеров
|
||||
|
||||
await on_startup()
|
||||
|
||||
try:
|
||||
# Запуск polling
|
||||
await dp.start_polling(bot)
|
||||
finally:
|
||||
# Действия при завершении работы
|
||||
await on_shutdown()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
||||
Reference in New Issue
Block a user