Spaces:
Sleeping
Sleeping
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup | |
def ikb(rows=None, back=False, todo="start_back"): | |
""" | |
rows = pass the rows | |
back - if want to make back button | |
todo - callback data of back button | |
""" | |
if rows is None: | |
rows = [] | |
lines = [] | |
try: | |
for row in rows: | |
line = [] | |
for button in row: | |
btn_text = button.split(".")[1].capitalize() | |
button = btn(btn_text, button) # InlineKeyboardButton | |
line.append(button) | |
lines.append(line) | |
except AttributeError: | |
for row in rows: | |
line = [] | |
for button in row: | |
# Will make the kb which don't have "." in them | |
button = btn(*button) | |
line.append(button) | |
lines.append(line) | |
except TypeError: | |
# make a code to handel that error | |
line = [] | |
for button in rows: | |
button = btn(*button) # InlineKeyboardButton | |
line.append(button) | |
lines.append(line) | |
if back: | |
back_btn = [(btn("« Back", todo))] | |
lines.append(back_btn) | |
return InlineKeyboardMarkup(inline_keyboard=lines) | |
def btn(text, value, type="callback_data"): | |
return InlineKeyboardButton(text, **{type: value}) | |