macro_rules! reply_markup {
(remove_keyboard) => { ... };
(remove_keyboard, selective) => { ... };
(force_reply) => { ... };
(force_reply, selective) => { ... };
(reply_keyboard, $($content:tt)*) => { ... };
(_reply_keyboard, resize, $($content:tt)*) => { ... };
(_reply_keyboard, one_time, $($content:tt)*) => { ... };
(_reply_keyboard, selective, $($content:tt)*) => { ... };
(_reply_keyboard, $([$($content:tt)*]), *) => { ... };
(_reply_keyboard_row, ($($acc:tt)*); $value:expr) => { ... };
(_reply_keyboard_row, ($($acc:tt)*); $value:expr, $($remaining:tt)*) => { ... };
(_reply_keyboard_row, ($($acc:tt)*); $value:tt $request:tt) => { ... };
(_reply_keyboard_row, ($($acc:tt)*); $value:tt $request:tt, $($remaining: tt)*) => { ... };
(_reply_keyboard_row, $($content:expr), *) => { ... };
(_reply_keyboard_row, $($content:tt)*) => { ... };
(_reply_keyboard_button, $value:expr, contact) => { ... };
(_reply_keyboard_button, $value:expr, location) => { ... };
(_reply_keyboard_button, $value:expr) => { ... };
(inline_keyboard, $([$($content:tt)*]), *) => { ... };
(_inline_keyboard_row, ($($acc:tt)*); $text:tt $request:tt $callback:tt) => { ... };
(_inline_keyboard_row, $($text:tt $request:tt $callback:tt), *) => { ... };
(_inline_keyboard_row, $($content:tt)*) => { ... };
(_inline_keyboard_button, callback, $text:expr, $callback:expr) => { ... };
(_inline_keyboard_button, url, $text:expr, $url:expr) => { ... };
}