Не очень понимаю в чем сложность, формируете клавиатуру и к методу send_message добавляете reply или inline клавиатуру. Если хотите картинку значит используйте send_photo, видео send_video (ну или как-то так, я с этой библиотекой не работаю). Для разметки есть параметр parse_mode. В API это все описано sendMessage
AnonTesting, ну если без БД можно сохранять в файл, я сохраняю в текстовый файл в json формате, название файла chat id пользователя. При обращении проверяете файл, загружаете данные из него. Хотя честно говоря так делать не рекомендую, лучше работать с БД (сам делаю только для совсем простых ботов)
AnonTesting, тогда запоминайте время в БД что пользователь уже нажал эту кнопку и проверяйте время. Запомнили время нажатия, сравнили было ли нажатие ранее, сравнили не нажимал ли кнопку 10-30-60 секунд назад. Если нажимал, останавливаем