dokku-comp
This commit is contained in:
70
bot/main.py
Normal file
70
bot/main.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import asyncio
|
||||
import logging
|
||||
import sys
|
||||
import signal # Import the signal module
|
||||
from aiogram import Bot, Dispatcher, Router
|
||||
from aiogram.enums import ParseMode
|
||||
from aiogram.filters import CommandStart, Command
|
||||
from aiogram.types import Message, ChatJoinRequest, CallbackQuery
|
||||
from bot.config import BOT_TOKEN, ADMIN_ID
|
||||
from bot.handlers.routing import handle_routing
|
||||
from bot.state import State
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
router = Router()
|
||||
state = State()
|
||||
|
||||
|
||||
@router.message(CommandStart())
|
||||
async def command_start_handler(message: Message) -> None:
|
||||
await message.answer("Напишите своё сообщение для администрации чата")
|
||||
|
||||
|
||||
@router.callback_query_handler(lambda x: True)
|
||||
async def process_callback(callback_query: CallbackQuery):
|
||||
cbq = vars(callback_query)
|
||||
data = cbq["data"]
|
||||
if data.startswith("vouch"):
|
||||
await handle_button(cbq)
|
||||
elif data.startswith("unlink"):
|
||||
await handle_unlink(cbq)
|
||||
|
||||
|
||||
@router.chat_join_request_handler()
|
||||
async def join_request_handler(update: ChatJoinRequest) -> None:
|
||||
print("chat join request")
|
||||
join_request = vars(update)
|
||||
await handle_join_request(join_request)
|
||||
|
||||
|
||||
@router.message()
|
||||
async def all_handler(message: Message) -> None:
|
||||
msg = vars(message)
|
||||
msg["from"] = vars(message.from_user)
|
||||
msg["chat"] = vars(message.chat)
|
||||
await handle_routing(msg)
|
||||
await asyncio.sleep(1.0)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
bot = Bot(BOT_TOKEN, parse_mode=ParseMode.HTML)
|
||||
dp = Dispatcher()
|
||||
dp.include_router(router)
|
||||
|
||||
# Start event dispatching
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
|
||||
|
||||
# Define a function to handle SIGTERM
|
||||
def handle_sigterm(signum, frame):
|
||||
logger.info("Received SIGTERM. Shutting down gracefully...")
|
||||
asyncio.get_event_loop().stop()
|
||||
|
||||
# Register the SIGTERM signal handler
|
||||
signal.signal(signal.SIGTERM, handle_sigterm)
|
||||
|
||||
asyncio.get_event_loop().run_until_complete(main())
|
Reference in New Issue
Block a user