uploader-bot/app/core/_keyboards.py

69 lines
1.9 KiB
Python

from aiogram import types
def get_keyboard(rows, one_time_keyboard=True, **kwargs) -> types.KeyboardButton:
keyboard = types.ReplyKeyboardMarkup(
resize_keyboard=True, one_time_keyboard=one_time_keyboard, **kwargs
)
for row in rows:
keyboard.add(
*[
types.KeyboardButton(button)
for button in row
]
)
return keyboard
def get_inline_keyboard(rows, *args, **kwargs):
if not rows: return None
keyboard = []
for row in rows:
if not row:
continue
result_row = []
for _item in row:
if not _item:
continue
if isinstance(_item, dict):
result_row.append(
types.InlineKeyboardButton(
**{
_key: _value for _key, _value in _item.items()
if _value
}
)
)
else:
result_row.append(_item)
keyboard.append(result_row)
return types.InlineKeyboardMarkup(inline_keyboard=keyboard)
def get_inline_query(items: list):
inline_items = []
for item in items:
inline_items.append(
types.InlineQueryResultArticle(
id=str(item.get('id', '0')),
title=item.get('title', ''),
input_message_content=types.InputTextMessageContent(
item.get('input_message_content', ''),
parse_mode='html',
disable_web_page_preview=True
),
reply_markup=get_inline_keyboard(item.get('reply_markup')),
url=item.get('url'),
hide_url=item.get('hide_url'),
description=item.get('description'),
thumb_url=item.get('thumb_url'),
)
)
return inline_items