def paginate_items(bot, update, chat_data, items, principal_property, backend_property, text, callback, additional_row=None):
message = update.effective_message
chat_id = message.chat_id
markup = []
first_message = bool(update.message)
page = chat_data[message.message_id]['pages'] if not first_message else 1
start = 10 * (page - 1) if page > 1 else 0
end = start + 10 if start + 10 < len(items) else len(items)
for i in range(start, end, 2):
item1 = items[i]
row = [InlineKeyboardButton(item1[principal_property],
callback_data='%s_DETAIL_%s' % (callback, str(item1[backend_property])))]
if i + 1 < len(items):
item2 = items[i + 1]
row.append(InlineKeyboardButton(item2[principal_property],
callback_data='%s_DETAIL_%s' % (callback, str(item2[backend_property]))))
markup.append(row)
markup = markup_append_pagination(bot, update, items, markup, page, callback)
if additional_row is not None:
markup.append(additional_row)
reply_markup = InlineKeyboardMarkup(markup)
if len(items) == 0:
text = _('No results')
if not first_message:
bot.edit_message_text(text, chat_id=chat_id, message_id=message.message_id, reply_markup=reply_markup,
parse_mode='Markdown')
else:
msg = bot.send_message(chat_id, text, disable_notification=True, reply_markup=reply_markup,
parse_mode='Markdown')
chat_data[msg.message_id] = dict()
chat_data[msg.message_id]['pages'] = page
评论列表
文章目录