Skip to content

Instantly share code, notes, and snippets.

@nodir-malikov
Created January 21, 2022 15:44
Show Gist options
  • Save nodir-malikov/a6ac1d86fd89fd1b56af1a867426091d to your computer and use it in GitHub Desktop.
Save nodir-malikov/a6ac1d86fd89fd1b56af1a867426091d to your computer and use it in GitHub Desktop.
Aiogram Language Middleware
from aiogram.contrib.middlewares.i18n import I18nMiddleware
from aiogram import types, Bot
from tgbot.models.users import User
async def get_lang(bot: Bot, user_id: int):
# Get language from database
db = bot.get('db')
user = await User.get_user(db, user_id)
if user:
# If user exists, return his language
return user.lang_code
class ACLMiddleware(I18nMiddleware):
# Every time when user send message, we check user's language
async def get_user_locale(self, action, args):
user = types.User.get_current()
bot = Bot.get_current()
# Get language from database or from telegram user locale
return await get_lang(bot, user.id) or user.locale
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment