Skip to content

Commit fc54d65

Browse files
committed
Added health chek
1 parent 1b04849 commit fc54d65

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

bot/configs/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class App(BaseSettings):
99
port: int = 8080
1010
url: str = 'https://my.domain'
1111
webhook_path: str = '/webhook/tg'
12+
health_path: str = '/healthz'
1213
default_language: str = 'en'
1314

1415

bot/handlers/handlers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ async def reply(self, message: Message, ctx: HandlerContext):
5757
await message.reply(text=ctx.bot_service.upper(text))
5858

5959
async def process_any_inline_button_press(self, callback: CallbackQuery, callback_data: SaveCallbackFactory):
60-
await callback.message.answer(text=callback_data.pack())
61-
await callback.answer()
60+
text = f'Callback packed: {callback_data.pack()}'
61+
if callback.message:
62+
await callback.message.answer(text=text)
63+
await callback.answer()
64+
else:
65+
await callback.answer(text=text, show_alert=True)
6266

6367
async def __send_message(self, chat_id: int, text: str, reply_to_message_id: int | None = None) -> int:
6468
await self.bot.send_chat_action(chat_id, ChatAction.TYPING)

bot/middlewares/i18n.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import Any
33

44
from aiogram import BaseMiddleware
5-
from aiogram.types import TelegramObject, User
5+
from aiogram.types import CallbackQuery, Message, TelegramObject, Update, User
66

77

88
class I18nMiddleware(BaseMiddleware):
@@ -12,11 +12,21 @@ async def __call__(
1212
event: TelegramObject,
1313
data: dict[str, Any],
1414
) -> Any:
15-
user: User = data.get('event_from_user')
15+
user: User | None = None
16+
17+
if isinstance(event, Message):
18+
user = event.from_user
19+
elif isinstance(event, CallbackQuery):
20+
user = event.from_user
21+
elif isinstance(event, Update):
22+
if event.message:
23+
user = event.message.from_user
24+
elif event.callback_query:
25+
user = event.callback_query.from_user
1626

1727
if user is None:
18-
return await handler(event, data)
28+
user = data.get('event_from_user')
1929

20-
data['user_lang'] = user.language_code
30+
data['user_lang'] = user.language_code if user and user.language_code else None
2131

2232
return await handler(event, data)

main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ async def webhook_handler(request: Request) -> None:
6060
logger.info(f'Received update: {update.update_id}')
6161
await dp.feed_update(bot, update)
6262
logger.debug(f'Successfully processed update: {update.update_id}')
63-
except Exception as e:
64-
logger.error(f'Failed to process update: {str(e)}')
65-
raise
63+
except Exception:
64+
logger.exception('Failed to process update')
6665

6766
return webhook_handler
6867

@@ -109,6 +108,7 @@ def create_app(bot: Bot, dp: Dispatcher, settings: App) -> FastAPI:
109108
app.add_event_handler('startup', create_startup_handler(bot, dp, settings.url + settings.webhook_path))
110109
app.add_event_handler('shutdown', create_shutdown_handler(bot, settings.debug))
111110
app.add_api_route(settings.webhook_path, create_webhook_handler(bot, dp), methods=['POST'])
111+
app.add_api_route(settings.health_path, lambda: {"status": "ok"}, methods=["GET"])
112112

113113
return app
114114

0 commit comments

Comments
 (0)