support for custom keyboard

This commit is contained in:
vvaltman 2015-06-17 16:48:44 +03:00
parent b9447e6ae1
commit b43ab0a522
6 changed files with 36 additions and 9 deletions

View File

@ -1,3 +1,5 @@
1.3.3
* support for sending custom keyboard
1.3.2 1.3.2
* use TGL-2.0.2 * use TGL-2.0.2
* add block/unblock user methods * add block/unblock user methods

View File

@ -86,6 +86,12 @@
# include "json-tg.h" # include "json-tg.h"
#endif #endif
#include "tgl/mtproto-common.h"
#include "auto/auto-store.h"
#include "auto/auto-fetch-ds.h"
#include "auto/auto-types.h"
#include "auto/auto-free-ds.h"
#define ALLOW_MULT 1 #define ALLOW_MULT 1
char *default_prompt = "> "; char *default_prompt = "> ";
@ -127,14 +133,13 @@ extern int daemonize;
extern struct tgl_state *TLS; extern struct tgl_state *TLS;
int readline_deactivated; int readline_deactivated;
void fail_interface (struct tgl_state *TLS, struct in_ev *ev, int error_code, const char *format, ...) __attribute__ (( format (printf, 4, 5)));
void event_incoming (struct bufferevent *bev, short what, void *_arg); void event_incoming (struct bufferevent *bev, short what, void *_arg);
int is_same_word (const char *s, size_t l, const char *word) { int is_same_word (const char *s, size_t l, const char *word) {
return s && word && strlen (word) == l && !memcmp (s, word, l); return s && word && strlen (word) == l && !memcmp (s, word, l);
} }
void fail_interface (struct tgl_state *TLS, struct in_ev *ev, int error_code, const char *format, ...) __attribute__ (( format (printf, 4, 5)));
static void skip_wspc (void) { static void skip_wspc (void) {
while (*line_ptr && ((unsigned char)*line_ptr) <= ' ') { while (*line_ptr && ((unsigned char)*line_ptr) <= ' ') {
line_ptr ++; line_ptr ++;
@ -746,7 +751,27 @@ void do_msg (struct command *command, int arg_num, struct arg args[], struct in_
assert (arg_num == 2); assert (arg_num == 2);
if (ev) { ev->refcnt ++; } if (ev) { ev->refcnt ++; }
vlogprintf (E_DEBUG, "reply_id=%d, disable=%d\n", reply_id, disable_msg_preview); vlogprintf (E_DEBUG, "reply_id=%d, disable=%d\n", reply_id, disable_msg_preview);
tgl_do_send_message (TLS, args[0].P->id, ARG2STR(1), TGL_SEND_MSG_FLAG_REPLY(reply_id) | disable_msg_preview, print_msg_success_gw, ev); tgl_do_send_message (TLS, args[0].P->id, ARG2STR(1), TGL_SEND_MSG_FLAG_REPLY(reply_id) | disable_msg_preview, NULL, print_msg_success_gw, ev);
}
void do_msg_kbd (struct command *command, int arg_num, struct arg args[], struct in_ev *ev) {
assert (arg_num == 3);
if (ev) { ev->refcnt ++; }
clear_packet ();
if (tglf_store_type (TLS, ARG2STR(1), TYPE_TO_PARAM (reply_markup)) < 0) {
fail_interface (TLS, ev, ENOSYS, "can not parse reply markup");
return;
}
in_ptr = packet_buffer;
in_end = packet_ptr;
struct tl_ds_reply_markup *DS_RM = fetch_ds_type_reply_markup (TYPE_TO_PARAM (reply_markup));
assert (DS_RM);
tgl_do_send_message (TLS, args[0].P->id, ARG2STR(2), TGL_SEND_MSG_FLAG_REPLY(reply_id) | disable_msg_preview, DS_RM, print_msg_success_gw, ev);
free_ds_type_reply_markup (DS_RM, TYPE_TO_PARAM (reply_markup));
} }
void do_reply (struct command *command, int arg_num, struct arg args[], struct in_ev *ev) { void do_reply (struct command *command, int arg_num, struct arg args[], struct in_ev *ev) {
@ -1392,6 +1417,7 @@ struct command commands[MAX_COMMANDS_SIZE] = {
{"main_session", {ca_none}, do_main_session, "main_session\tSends updates to this connection (or terminal). Useful only with listening socket", NULL}, {"main_session", {ca_none}, do_main_session, "main_session\tSends updates to this connection (or terminal). Useful only with listening socket", NULL},
{"mark_read", {ca_peer, ca_none}, do_mark_read, "mark_read <peer>\tMarks messages with peer as read", NULL}, {"mark_read", {ca_peer, ca_none}, do_mark_read, "mark_read <peer>\tMarks messages with peer as read", NULL},
{"msg", {ca_peer, ca_msg_string_end, ca_none}, do_msg, "msg <peer> <text>\tSends text message to peer", NULL}, {"msg", {ca_peer, ca_msg_string_end, ca_none}, do_msg, "msg <peer> <text>\tSends text message to peer", NULL},
{"msg_kbd", {ca_peer, ca_string, ca_msg_string_end, ca_none}, do_msg_kbd, "msg <peer> <kbd> <text>\tSends text message to peer with custom kbd", NULL},
{"quit", {ca_none}, do_quit, "quit\tQuits immediately", NULL}, {"quit", {ca_none}, do_quit, "quit\tQuits immediately", NULL},
{"rename_chat", {ca_chat, ca_string_end, ca_none}, do_rename_chat, "rename_chat <chat> <new name>\tRenames chat", NULL}, {"rename_chat", {ca_chat, ca_string_end, ca_none}, do_rename_chat, "rename_chat <chat> <new name>\tRenames chat", NULL},
{"rename_contact", {ca_user, ca_string, ca_string, ca_none}, do_rename_contact, "rename_contact <user> <first name> <last name>\tRenames contact", NULL}, {"rename_contact", {ca_user, ca_string, ca_string, ca_none}, do_rename_contact, "rename_contact <user> <first name> <last name>\tRenames contact", NULL},
@ -1837,7 +1863,6 @@ void print_fail (struct in_ev *ev) {
mprint_end (ev); mprint_end (ev);
} }
void fail_interface (struct tgl_state *TLS, struct in_ev *ev, int error_code, const char *format, ...) __attribute__ (( format (printf, 4, 5)));
void fail_interface (struct tgl_state *TLS, struct in_ev *ev, int error_code, const char *format, ...) { void fail_interface (struct tgl_state *TLS, struct in_ev *ev, int error_code, const char *format, ...) {
static char error[1001]; static char error[1001];
@ -2299,7 +2324,7 @@ void interpreter_chat_mode (char *line) {
return; return;
} }
if (strlen (line) > 0) { if (strlen (line) > 0) {
tgl_do_send_message (TLS, chat_mode_id, line, strlen (line), 0, 0, 0); tgl_do_send_message (TLS, chat_mode_id, line, strlen (line), 0, NULL, 0, 0);
} }
} }

View File

@ -1026,7 +1026,7 @@ void lua_do_all (void) {
tgl_do_get_dialog_list (TLS, 100, 0, lua_dialog_list_cb, lua_ptr[p ++]); tgl_do_get_dialog_list (TLS, 100, 0, lua_dialog_list_cb, lua_ptr[p ++]);
break; break;
case lq_msg: case lq_msg:
tgl_do_send_message (TLS, ((tgl_peer_t *)lua_ptr[p + 1])->id, lua_ptr[p + 2], strlen (lua_ptr[p + 2]), 0, lua_msg_cb, lua_ptr[p]); tgl_do_send_message (TLS, ((tgl_peer_t *)lua_ptr[p + 1])->id, lua_ptr[p + 2], strlen (lua_ptr[p + 2]), 0, NULL, lua_msg_cb, lua_ptr[p]);
free (lua_ptr[p + 2]); free (lua_ptr[p + 2]);
p += 3; p += 3;
break; break;

View File

@ -817,7 +817,7 @@ void py_do_all (void) {
} }
flags |= TGL_SEND_MSG_FLAG_REPLY (reply_id); flags |= TGL_SEND_MSG_FLAG_REPLY (reply_id);
} }
tgl_do_send_message (TLS, PY_PEER_ID(peer), str, len, flags, py_msg_cb, cb_extra); tgl_do_send_message (TLS, PY_PEER_ID(peer), str, len, flags, NULL, py_msg_cb, cb_extra);
} else } else
PyErr_Print(); PyErr_Print();

View File

@ -21,4 +21,4 @@
#define PROG_NAME "telegram-cli" #define PROG_NAME "telegram-cli"
#endif #endif
#define TELEGRAM_CLI_VERSION "1.3.2" #define TELEGRAM_CLI_VERSION "1.3.3"

2
tgl

@ -1 +1 @@
Subproject commit 73482c7a461ff4341ea098dd258b6373f530ab70 Subproject commit d9769636bcd5d2b209c956e15eca4a81f9e677e9