Initial commit

This commit is contained in:
Forden
2020-04-06 00:12:41 +03:00
parent 0f5a395b72
commit af8294ff61
22 changed files with 214 additions and 0 deletions

0
keyboards/__init__.py Normal file
View File

View File

View File

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,21 @@
from typing import List, Tuple, Dict
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.callback_data import CallbackData
from . import utils
class InlineConstructor:
@staticmethod
def _create_kb(actions: List[Tuple[str, Dict[str, str], CallbackData]], schema: List[int]) -> InlineKeyboardMarkup:
btns = []
for a, b, c in actions:
btns.append(
InlineKeyboardButton(
text=a,
callback_data=c.new(**b)
)
)
kb = utils.misc.arrange_inline_schema(btns, schema)
return kb

View File

@@ -0,0 +1 @@
from . import misc

View File

@@ -0,0 +1,17 @@
from typing import List
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def arrange_inline_schema(buttons: List[InlineKeyboardButton], count: List[int]) -> InlineKeyboardMarkup:
kb = InlineKeyboardMarkup()
btns = buttons
kb.row_width = max(count)
if sum(count) != len(buttons):
raise ValueError('Количество кнопок не совпадает со схемой')
tmplist = [[InlineKeyboardButton('') for _ in range(count[i])] for i in range(len(count))]
for a in range(len(tmplist)):
for b in range(len(tmplist[a])):
tmplist[a][b] = btns.pop(0)
kb.inline_keyboard = tmplist
return kb