это из старой доки
надо делать так:
testbuttons = types.ReplyKeyboardMarkup(resize_keyboard=True) (resize_keyboard для тонких кнопок)
b1 = types.KeyboardButton('test')
testbuttons.add(b1)
(методом .add кнопки добавляются уровнями например):
buttons.add(b1,b2)
buttons.add(b3)
таким образом сверху будет две кнопки, а снизу одна
а за reply_markup все верно
и это надо делать вне всяких блоков, там if или while, можно создавать кнопки в блоках class, или без класса, просто не блоков.