Merge branch 'chat-kick-c' of https://github.com/EionRobb/telegram-purple into dev-1.4.0
This commit is contained in:
commit
7744facaec
3 changed files with 46 additions and 1 deletions
|
@ -408,6 +408,26 @@ void leave_and_delete_chat_by_name (struct tgl_state *TLS, const char *name) {
|
|||
leave_and_delete_chat (TLS, P);
|
||||
}
|
||||
|
||||
static PurpleCmdRet
|
||||
tgprpl_cmd_kick(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
|
||||
{
|
||||
PurpleConnection *pc = NULL;
|
||||
int id = -1;
|
||||
gchar *who;
|
||||
|
||||
pc = conv->account->gc;
|
||||
id = purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv));
|
||||
|
||||
if (pc == NULL || id == -1)
|
||||
return PURPLE_CMD_RET_FAILED;
|
||||
|
||||
who = g_strjoinv(" ", args);
|
||||
tgprpl_kick_from_chat(pc, id, who);
|
||||
g_free(who);
|
||||
|
||||
return PURPLE_CMD_RET_OK;
|
||||
}
|
||||
|
||||
static void import_chat_link_done (struct tgl_state *TLS, void *extra, int success) {
|
||||
if (! success) {
|
||||
tgp_notify_on_error_gw (TLS, NULL, success);
|
||||
|
@ -797,6 +817,15 @@ static PurplePluginProtocolInfo prpl_info = {
|
|||
NULL // add_buddies_with_invite
|
||||
};
|
||||
|
||||
static gboolean tgprpl_load (PurplePlugin *plugin) {
|
||||
purple_cmd_register("kick", "s", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
|
||||
PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
|
||||
PLUGIN_ID, tgprpl_cmd_kick,
|
||||
_("kick <user>: Kick a user from the room."), NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void tgprpl_init (PurplePlugin *plugin) {
|
||||
PurpleAccountOption *opt;
|
||||
|
||||
|
@ -884,7 +913,7 @@ static PurplePluginInfo plugin_info = {
|
|||
N_("Telegram Protocol Plugin."),
|
||||
PLUGIN_AUTHOR,
|
||||
"https://github.com/majn/telegram-purple",
|
||||
NULL, // on load
|
||||
tgprpl_load, // on load
|
||||
NULL, // on unload
|
||||
NULL, // on destroy
|
||||
NULL, // ui specific struct
|
||||
|
|
15
tgp-chat.c
15
tgp-chat.c
|
@ -218,6 +218,21 @@ int tgprpl_send_chat (PurpleConnection *gc, int id, const char *message, PurpleM
|
|||
return tgp_msg_send (gc_get_tls (gc), message, P->id);
|
||||
}
|
||||
|
||||
void tgprpl_kick_from_chat (PurpleConnection *gc, int id, const char *who) {
|
||||
debug ("tgprpl_kick_from_chat()");
|
||||
|
||||
tgl_peer_t *P = tgl_peer_get (gc_get_tls (gc), TGL_MK_CHAT(id));
|
||||
if (! P) {
|
||||
P = tgl_peer_get (gc_get_tls (gc), TGL_MK_CHANNEL(id));
|
||||
}
|
||||
g_return_if_fail(P != NULL);
|
||||
|
||||
tgl_peer_t *other_id = tgp_blist_lookup_peer_get (gc_get_tls (gc), who);
|
||||
g_return_if_fail(P != NULL);
|
||||
|
||||
tgl_do_del_user_from_chat (gc_get_tls (gc), P->id, other_id->id, tgp_notify_on_error_gw, NULL);
|
||||
}
|
||||
|
||||
GList *tgprpl_chat_join_info (PurpleConnection *gc) {
|
||||
struct proto_chat_entry *pce;
|
||||
pce = g_new0 (struct proto_chat_entry, 1);
|
||||
|
|
|
@ -53,6 +53,7 @@ PurpleRoomlist *tgprpl_roomlist_get_list (PurpleConnection *gc);
|
|||
void tgprpl_roomlist_cancel (PurpleRoomlist *list);
|
||||
GHashTable *tgprpl_chat_info_defaults (PurpleConnection *gc, const char *chat_name);
|
||||
void tgp_chat_join_all_pending (struct tgl_state *TLS);
|
||||
void tgprpl_kick_from_chat (PurpleConnection *gc, int id, const char *who);
|
||||
|
||||
void tgp_channel_load (struct tgl_state *TLS, tgl_peer_t *P,
|
||||
void (*callback) (struct tgl_state *, void *, int, tgl_peer_t *),
|
||||
|
|
Loading…
Add table
Reference in a new issue