69 lines
1.9 KiB
Python
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
|