Forwarded from IT Tech | πΊπΏ (dev-au π΅πΈ)
#optimize_code
Hozir aiogramda bir skript yaratgan edim, aiogramda ishni ancha qulay qiladi
Ushbu klass, reply keyboardlarni tezkor yaratish va filtrlash imkonini beradi, negadir hozircha pycharm meni kodimni tanimayapti, lekin kod xatosiz ishlamoqda. Undan foydalanish quyidagicha
Bu yerda row=2 => 2qatorli menyu yaratildi, tugmalar soni 3ta bo'lgani uchun, bitta tugma alohida qoladi, reverse esa teskari tartiblaydi ya'ni 1-yakka tugma statistika bo'lsa, pastda qolgan 2tasi, agar reverse bo'lmasa statistika oxirida yakka qoladi. Foydalanish esa quyidagicha:
Tugmalarni filterlash ham oson
Pycharm biroz tanimay, qizg'ish tursa ham, yaxshi optimizatsiya. Just use it!
Hozir aiogramda bir skript yaratgan edim, aiogramda ishni ancha qulay qiladi
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
class KeyboardBuilder:
__row__: int
__reverse__: bool
def __init_subclass__(cls, row: int, reverse: bool) -> None:
cls.__row__ = row
cls.__reverse__ = reverse
def __new__(cls) -> ReplyKeyboardMarkup:
keyboards = [[]]
buttons = cls.__dict__
for key, value in buttons.items():
if not key.startswith("__") and isinstance(value, str):
if len(keyboards[-1]) == cls.__row__:
keyboards.append([])
keyboards[-1].append(KeyboardButton(text=value))
if cls.__reverse__:
keyboards = keyboards[::-1]
return ReplyKeyboardMarkup(keyboard=keyboards, resize_keyboard=True)
Ushbu klass, reply keyboardlarni tezkor yaratish va filtrlash imkonini beradi, negadir hozircha pycharm meni kodimni tanimayapti, lekin kod xatosiz ishlamoqda. Undan foydalanish quyidagicha
class StartMenu(KeyboardBuilder, row=2, reverse=True):
sign_up = 'Ro\'yxatdan o\'tish'
sign_in = 'Kirish'
statistics = 'Statistika'
Bu yerda row=2 => 2qatorli menyu yaratildi, tugmalar soni 3ta bo'lgani uchun, bitta tugma alohida qoladi, reverse esa teskari tartiblaydi ya'ni 1-yakka tugma statistika bo'lsa, pastda qolgan 2tasi, agar reverse bo'lmasa statistika oxirida yakka qoladi. Foydalanish esa quyidagicha:
await message.answer('Yana bir bor assalomu alaykum!', reply_markup=StartMenu())Tugmalarni filterlash ham oson
@dp.message(F.text == StartMenu.statistics)
Pycharm biroz tanimay, qizg'ish tursa ham, yaxshi optimizatsiya. Just use it!
π5π₯2