diff src/protocols/yahoo/yahoo.c @ 10119:2a2cd2a6f7cf

[gaim-migrate @ 11156] bleeter added /join and /buzz commands for yahoo. committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Tue, 19 Oct 2004 01:46:20 +0000
parents e94f5975a4df
children bde7418a2573
line wrap: on
line diff
--- a/src/protocols/yahoo/yahoo.c	Tue Oct 19 00:04:59 2004 +0000
+++ b/src/protocols/yahoo/yahoo.c	Tue Oct 19 01:46:20 2004 +0000
@@ -26,6 +26,7 @@
 #include "account.h"
 #include "accountopt.h"
 #include "blist.h"
+#include "cmds.h"
 #include "debug.h"
 #include "notify.h"
 #include "privacy.h"
@@ -3383,8 +3384,69 @@
 	g_free(gpo);
 }
 
+static GaimCmdRet
+yahoogaim_cmd_buzz(GaimConversation *c, const gchar *cmd, gchar **args, gchar **error, void *data) {
+
+	GaimAccount *account = gaim_conversation_get_account(c);
+	const char *username = gaim_account_get_username(account);
+
+	if (*args && args[0])
+		return GAIM_CMD_RET_FAILED;
+
+	gaim_debug(GAIM_DEBUG_INFO, "yahoo",
+	           "Sending <ding> on account %s to buddy %s.\n", username, c->name);
+	gaim_conv_im_send(GAIM_CONV_IM(c), "<ding>");
+	gaim_conv_im_write(GAIM_CONV_IM(c), "", _("Buzz!!"), GAIM_MESSAGE_NICK|GAIM_MESSAGE_RECV, time(NULL));
+	return GAIM_CMD_RET_OK;
+}
+
 static GaimPlugin *my_protocol = NULL;
 
+/********************************* Commands **********************************/
+
+static GaimCmdRet
+yahoogaim_cmd_chat_join(GaimConversation *conv, const char *cmd,
+                        char **args, char **error, void *data)
+{
+	GHashTable *comp;
+	GaimConnection *gc;
+	struct yahoo_data *yd;
+	int id;
+
+	if (!args || !args[0])
+		return GAIM_CMD_RET_FAILED;
+
+	gc = gaim_conversation_get_gc(conv);
+	yd = gc->proto_data;
+	id = yd->conf_id;
+	gaim_debug(GAIM_DEBUG_INFO, "yahoo",
+	           "Trying to join %s \n", args[0]);
+
+	comp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+	g_hash_table_replace(comp, g_strdup("room"),
+	g_strdup_printf("%s", g_ascii_strdown(args[0], strlen(args[0]))));
+	g_hash_table_replace(comp, g_strdup("type"), g_strdup("Chat"));	
+
+	yahoo_c_join(gc, comp);
+
+	g_hash_table_destroy(comp);
+	return GAIM_CMD_RET_OK;
+}
+/************************** Plugin Initialization ****************************/
+static void
+yahoogaim_register_commands(void)
+{
+	gaim_cmd_register("join", "s", GAIM_CMD_P_PRPL,
+	                  GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT |
+	                  GAIM_CMD_FLAG_PRPL_ONLY,
+	                  "prpl-yahoo", yahoogaim_cmd_chat_join,
+	                  _("join &lt;room&gt;:  Join a chat room on the Yahoo network"), NULL);
+	gaim_cmd_register("buzz", "", GAIM_CMD_P_PLUGIN,
+	                  GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_PRPL_ONLY,
+	                  "prpl-yahoo", yahoogaim_cmd_buzz,
+	                  _("buzz: Buzz a contact to get their attention"), NULL);
+}
+
 static GaimPluginProtocolInfo prpl_info =
 {
 	OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
@@ -3515,7 +3577,7 @@
 #endif
 
 	my_protocol = plugin;
-
+	yahoogaim_register_commands();
 	yahoo_init_colorht();
 }