В aiogram 3.0 вы можете реализовать пагинацию inline кнопок с использованием класса `InlineKeyboardPaginator`. Этот класс позволяет объединять кнопки в несколько страниц и управлять ими.
Пример реализации пагинации inline кнопок с ограниченным списком пользователей:
```python
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.utils.markdown import hlink
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
# Создаем объекты бота и диспетчера
bot = Bot(token='TOKEN')
dp = Dispatcher(bot, storage=MemoryStorage())
# Список пользователей
users = ['user1', 'user2', 'user3', 'user4', 'user5', 'user6', 'user7', 'user8', 'user9', 'user10']
# Количество пользователей на странице
users_per_page = 3
# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
await message.answer(text='Список пользователей:')
await show_users(message.chat.id, page=0)
# Обработчик кнопок
@dp.callback_query_handler()
async def callback_handler(query: types.CallbackQuery, state: FSMContext):
current_page = int(query.data.split(':')[1])
await show_users(query.message.chat.id, page=current_page)
# Функция отображения пользователей
async def show_users(chat_id, page):
start_index = page * users_per_page
end_index = (page + 1) * users_per_page
# Создаем клавиатуру для пагинации
keyboard = InlineKeyboardMarkup(row_width=2)
if start_index > 0:
keyboard.insert(InlineKeyboardButton('<-', callback_data=f'paginate:{page-1}'))
for user in users[start_index:end_index]:
keyboard.insert(InlineKeyboardButton(user, callback_data=''))
if end_index < len(users):
keyboard.insert(InlineKeyboardButton('->', callback_data=f'paginate:{page+1}'))
await bot.send_message(chat_id, 'Выберите пользователя:', reply_markup=keyboard)
if __name__ == '__main__':
executor.start_polling(dp)
```
Теперь ваш бот будет отображать список пользователей с пагинацией. Вы сможете выбрать пользователя, щелкнув на соответствующую кнопку, и управлять страницами, щелкая на кнопки "<-" и "->".