{"help",{ca_none},do_help,"help\tPrints this help"},
{"accept_secret_chat",{ca_secret_chat,ca_none},do_accept_secret_chat,"accept_secret_chat <secret chat>\tAccepts secret chat. Only useful with -E option"},
{"add_contact",{ca_string,ca_string,ca_string,ca_none},do_add_contact,"add_contact <phone> <first name> <last name>\tTries to add user to contact list"},
{"chat_add_user",{ca_chat,ca_user,ca_number|ca_optional,ca_none},do_chat_add_user,"chat_add_user <chat> <user> [msgs-to-forward]\tAdds user to chat. Sends him last msgs-to-forward message from this chat. Default 100"},
{"chat_del_user",{ca_chat,ca_user,ca_none},do_chat_del_user,"chat_del_user <chat> <user>\tDeletes user from chat"},
{"chat_info",{ca_chat,ca_none},do_chat_info,"chat_info <chat>\tPrints info about chat (id, members, admin, etc.)"},
{"chat_set_photo",{ca_chat,ca_file_name_end,ca_none},do_chat_set_photo,"chat_set_photo <chat> <filename>\tSets chat photo. Photo will be cropped to square"},
{"chat_with_peer",{ca_peer,ca_none},do_chat_with_peer,"chat_with_peer <peer>\tInterface option. All input will be treated as messages to this peer. Type /quit to end this mode"},
{"clear",{ca_none},do_clear,"clear\tClears all data and exits. For debug."},
{"history",{ca_peer,ca_number|ca_optional,ca_number|ca_optional,ca_none},do_history,"history <peer> [limit] [offset]\tPrints messages with this peer (most recent message lower). Also marks messages as read"},
{"contact_search",{ca_string,ca_number|ca_optional,ca_none},do_contact_search,"contact_search username [limit]\tSearches contacts by username"},
{"create_group_chat",{ca_string,ca_user,ca_period,ca_none},do_create_group_chat,"create_group_chat <name> <user>+\tCreates group chat with users"},
{"create_secret_chat",{ca_user,ca_none},do_create_secret_chat,"create_secret_chat <user>\tStarts creation of secret chat"},
{"del_contact",{ca_user,ca_none},do_del_contact,"del_contact <user>\tDeletes contact from contact list"},
{"dialog_list",{ca_none},do_dialog_list,"dialog_list\tList of last conversations"},
{"send_photo",{ca_peer,ca_file_name_end,ca_none},do_send_photo,"send_photo <peer> <file>\tSends photo to peer"},
{"send_video",{ca_peer,ca_file_name_end,ca_none},do_send_video,"send_video <peer> <file>\tSends video to peer"},
{"send_audio",{ca_peer,ca_file_name_end,ca_none},do_send_audio,"send_audio <peer> <file>\tSends audio to peer"},
{"send_document",{ca_peer,ca_file_name_end,ca_none},do_send_document,"send_document <peer> <file>\tSends document to peer"},
{"send_text",{ca_peer,ca_file_name_end,ca_none},do_send_text,"send_text <peer> <file>\tSends contents of text file as plain text message"},
{"chat_info",{ca_chat,ca_none},do_chat_info,"chat_info <chat>\tPrints info about chat (id, members, admin, etc.)"},
{"user_info",{ca_user,ca_none},do_user_info,"user_info <user>\tPrints info about user (id, last online, phone)"},
{"export_card",{ca_none},do_export_card,"export_card\tPrints card that can be imported by another user with import_card method"},
{"fwd",{ca_peer,ca_number,ca_none},do_fwd,"fwd <peer> <msg-id>\tForwards message to peer. Forward to secret chats is forbidden"},
{"fwd_media",{ca_peer,ca_number,ca_none},do_fwd_media,"fwd <peer> <msg-id>\tForwards message media to peer. Forward to secret chats is forbidden. Result slightly differs from fwd"},
{"msg",{ca_peer,ca_string_end,ca_none},do_msg,"msg <peer> <text>\tSends text message to peer"},
{"load_photo",{ca_number,ca_none},do_load_photo,"load_photo <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_video",{ca_number,ca_none},do_load_video,"load_video <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"help",{ca_none},do_help,"help\tPrints this help"},
{"history",{ca_peer,ca_number|ca_optional,ca_number|ca_optional,ca_none},do_history,"history <peer> [limit] [offset]\tPrints messages with this peer (most recent message lower). Also marks messages as read"},
{"import_card",{ca_string,ca_none},do_import_card,"import_card <card>\tGets user by card and prints it name. You can then send messages to him as usual"},
{"load_audio",{ca_number,ca_none},do_load_audio,"load_audio <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_document",{ca_number,ca_none},do_load_document,"load_document <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_video_thumb",{ca_number,ca_none},do_load_video_thumb,"load_video_thumb <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_document_thumb",{ca_number,ca_none},do_load_document_thumb,"load_document_thumb <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"view_photo",{ca_number,ca_none},do_open_photo,"view_photo <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_video",{ca_number,ca_none},do_open_video,"view_video <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_audio",{ca_number,ca_none},do_open_audio,"view_audio <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_document",{ca_number,ca_none},do_open_document,"view_document <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_video_thumb",{ca_number,ca_none},do_open_video_thumb,"view_video_thumb <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_document_thumb",{ca_number,ca_none},do_open_document_thumb,"view_document_thumb <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"add_contact",{ca_string,ca_string,ca_string,ca_none},do_add_contact,"add_contact <phone> <first name> <last name>\tTries to add user to contact list"},
{"del_contact",{ca_user,ca_none},do_del_contact,"del_contact <user>\tDeletes contact from contact list"},
{"show_license",{ca_none},do_show_license,"show_license\tPrints contents of GPL license"},
{"search",{ca_peer|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_string_end},do_search,"search [peer] [limit] [from] [to] [offset] pattern\tSearch for pattern in messages from date from to date to (unixtime) in messages with peer (if peer not present, in all messages)"},
{"load_photo",{ca_number,ca_none},do_load_photo,"load_photo <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_video",{ca_number,ca_none},do_load_video,"load_video <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"load_video_thumb",{ca_number,ca_none},do_load_video_thumb,"load_video_thumb <msg-id>\tDownloads file to downloads dirs. Prints file name after download end"},
{"main_session",{ca_none},do_main_session,"main_session\tSends updates to this connection (or terminal). Useful only with listening socket"},
{"mark_read",{ca_peer,ca_none},do_mark_read,"mark_read <peer>\tMarks messages with peer as read"},
{"contact_search",{ca_string,ca_number|ca_optional,ca_none},do_contact_search,"contact_search username [limit]\tSearches contacts by username"},
{"visualize_key",{ca_secret_chat,ca_none},do_visualize_key,"visualize_key <secret chat>\tPrints visualization of encryption key (first 16 bytes sha1 of it in fact}"},
{"create_secret_chat",{ca_user,ca_none},do_create_secret_chat,"create_secret_chat <user>\tStarts creation of secret chat"},
{"chat_add_user",{ca_chat,ca_user,ca_number|ca_optional,ca_none},do_chat_add_user,"chat_add_user <chat> <user> [msgs-to-forward]\tAdds user to chat. Sends him last msgs-to-forward message from this chat. Default 100"},
{"chat_del_user",{ca_chat,ca_user,ca_none},do_chat_del_user,"chat_del_user <chat> <user>\tDeletes user from chat"},
{"status_online",{ca_none},do_status_online,"status_online\tSets status as online"},
{"status_offline",{ca_none},do_status_offline,"status_offline\tSets status as offline"},
{"msg",{ca_peer,ca_string_end,ca_none},do_msg,"msg <peer> <text>\tSends text message to peer"},
{"restore_msg",{ca_number,ca_none},do_restore_msg,"restore_msg <msg-id>\tRestores message. Only available shortly (one hour?) after deletion"},
{"safe_quit",{ca_none},do_safe_quit,"safe_quit\tWaits for all queries to end, then quits"},
{"search",{ca_peer|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_number|ca_optional,ca_string_end},do_search,"search [peer] [limit] [from] [to] [offset] pattern\tSearch for pattern in messages from date from to date to (unixtime) in messages with peer (if peer not present, in all messages)"},
{"send_audio",{ca_peer,ca_file_name_end,ca_none},do_send_audio,"send_audio <peer> <file>\tSends audio to peer"},
{"send_photo",{ca_peer,ca_file_name_end,ca_none},do_send_photo,"send_photo <peer> <file>\tSends photo to peer"},
{"send_text",{ca_peer,ca_file_name_end,ca_none},do_send_text,"send_text <peer> <file>\tSends contents of text file as plain text message"},
{"send_video",{ca_peer,ca_file_name_end,ca_none},do_send_video,"send_video <peer> <file>\tSends video to peer"},
{"set",{ca_string,ca_number,ca_none},do_set,"set <param> <value>\tSets value of param. Currently available: log_level, debug_verbosity, alarm, msg_num"},
{"chat_with_peer",{ca_peer,ca_none},do_chat_with_peer,"chat_with_peer <peer>\tInterface option. All input will be treated as messages to this peer. Type /quit to end this mode"},
{"restore_msg",{ca_number,ca_none},do_restore_msg,"restore_msg <msg-id>\tRestores message. Only available shortly (one hour?) after deletion"},
{"create_group_chat",{ca_string,ca_user,ca_period,ca_none},do_create_group_chat,"create_group_chat <name> <user>+\tCreates group chat with users"},
{"chat_set_photo",{ca_chat,ca_file_name_end,ca_none},do_chat_set_photo,"chat_set_photo <chat> <filename>\tSets chat photo. Photo will be cropped to square"},
{"set_profile_photo",{ca_file_name_end,ca_none},do_set_profile_photo,"set_profile_photo <filename>\tSets profile photo. Photo will be cropped to square"},
{"accept_secret_chat",{ca_secret_chat,ca_none},do_accept_secret_chat,"accept_secret_chat <secret chat>\tAccepts secret chat. Only useful with -E option"},
{"set_profile_photo",{ca_file_name_end,ca_none},do_set_profile_photo,"set_profile_photo <filename>\tSets profile photo. Photo will be cropped to square"},
{"export_card",{ca_none},do_export_card,"export_card\tPrints card that can be imported by another user with import_card method"},
{"import_card",{ca_string,ca_none},do_import_card,"import_card <card>\tGets user by card and prints it name. You can then send messages to him as usual"},
{"status_online",{ca_none},do_status_online,"status_online\tSets status as online"},
{"status_offline",{ca_none},do_status_offline,"status_offline\tSets status as offline"},
{"user_info",{ca_user,ca_none},do_user_info,"user_info <user>\tPrints info about user (id, last online, phone)"},
{"view_audio",{ca_number,ca_none},do_open_audio,"view_audio <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_document",{ca_number,ca_none},do_open_document,"view_document <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_document_thumb",{ca_number,ca_none},do_open_document_thumb,"view_document_thumb <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_photo",{ca_number,ca_none},do_open_photo,"view_photo <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_video",{ca_number,ca_none},do_open_video,"view_video <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"view_video_thumb",{ca_number,ca_none},do_open_video_thumb,"view_video_thumb <msg-id>\tDownloads file to downloads dirs. Then tries to open it with system default action"},
{"visualize_key",{ca_secret_chat,ca_none},do_visualize_key,"visualize_key <secret chat>\tPrints visualization of encryption key (first 16 bytes sha1 of it in fact}"},