From 1b221e0abd6453e3ca9cf45916ff6d16f94eff2b Mon Sep 17 00:00:00 2001 From: Geert Mulders Date: Tue, 1 Dec 2009 22:08:02 +0100 Subject: Added twitter-module. --- protocols/twitter/twitter.c | 221 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 protocols/twitter/twitter.c (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c new file mode 100644 index 00000000..1cc7eaeb --- /dev/null +++ b/protocols/twitter/twitter.c @@ -0,0 +1,221 @@ +/***************************************************************************\ +* * +* BitlBee - An IRC to IM gateway * +* Simple module to facilitate twitter functionality. * +* * +* Copyright 2009 Geert Mulders * +* * +* This library is free software; you can redistribute it and/or * +* modify it under the terms of the GNU Lesser General Public * +* License as published by the Free Software Foundation, version * +* 2.1. * +* * +* This library is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +* Lesser General Public License for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with this library; if not, write to the Free Software Foundation, * +* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * +* * +****************************************************************************/ + +#include "nogaim.h" +#include "twitter.h" +#include "twitter_http.h" +#include "twitter_lib.h" + + +/** + * * Main loop function + * */ +gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) +{ + struct im_connection *ic = data; + // Check if we are still logged in... + if ((ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN) + return 0; + + // Do stuff.. + twitter_get_home_timeline(ic, -1); + + // If we are still logged in run this function again after timeout. + return (ic->flags & OPT_LOGGED_IN) == OPT_LOGGED_IN; +} + + +static void twitter_init( account_t *acc ) +{ +} + +/** + * Login method. Since the twitter API works with seperate HTTP request we + * only save the user and pass to the twitter_data object. + */ +static void twitter_login( account_t *acc ) +{ + struct im_connection *ic = imcb_new( acc ); + struct twitter_data *td = g_new0( struct twitter_data, 1 ); + + td->user = acc->user; + td->pass = acc->pass; + td->home_timeline_id = 0; + + ic->proto_data = td; + + // Set the status to logged in. + ic->flags = OPT_LOGGED_IN; + + // Try to get the buddies... + //twitter_get_friends_ids(ic, -1); + + //twitter_get_home_timeline(ic, -1); + + // Run this once. After this queue the main loop function. + twitter_main_loop(ic, -1, 0); + + // Queue the main_loop + b_timeout_add(60000, twitter_main_loop, ic); + + imcb_log( ic, "Connecting to twitter" ); + imcb_connected(ic); +} + +/** + * Logout method. Just free the twitter_data. + */ +static void twitter_logout( struct im_connection *ic ) +{ + struct twitter_data *td = ic->proto_data; + + // Set the status to logged out. + ic->flags = 0; + + if( td ) + { + g_free( td ); + } +} + +/** + * + */ +static int twitter_buddy_msg( struct im_connection *ic, char *who, char *message, int away ) +{ + imcb_log( ic, "In twitter_buddy_msg..."); + twitter_post_status(ic, message); + return( 0 ); +} + +/** + * + */ +static GList *twitter_away_states( struct im_connection *ic ) +{ + static GList *l = NULL; + return l; +} + +static void twitter_set_away( struct im_connection *ic, char *state, char *message ) +{ +} + +static void twitter_set_my_name( struct im_connection *ic, char *info ) +{ + imcb_log( ic, "In twitter_set_my_name..." ); +// char * aap = twitter_http("http://gertje.org", NULL, ic, 1, "geert", "poep", NULL, 0); + +// imcb_log( ic, aap ); +// g_free(aap); +} + +static void twitter_get_info(struct im_connection *ic, char *who) +{ +} + +static void twitter_add_buddy( struct im_connection *ic, char *who, char *group ) +{ +} + +static void twitter_remove_buddy( struct im_connection *ic, char *who, char *group ) +{ +} + +static void twitter_chat_msg( struct groupchat *c, char *message, int flags ) +{ +} + +static void twitter_chat_invite( struct groupchat *c, char *who, char *message ) +{ +} + +static void twitter_chat_leave( struct groupchat *c ) +{ +} + +static struct groupchat *twitter_chat_with( struct im_connection *ic, char *who ) +{ + return NULL; +} + +static void twitter_keepalive( struct im_connection *ic ) +{ +} + +static void twitter_add_permit( struct im_connection *ic, char *who ) +{ +} + +static void twitter_rem_permit( struct im_connection *ic, char *who ) +{ +} + +static void twitter_add_deny( struct im_connection *ic, char *who ) +{ +} + +static void twitter_rem_deny( struct im_connection *ic, char *who ) +{ +} + +static int twitter_send_typing( struct im_connection *ic, char *who, int typing ) +{ + return( 1 ); +} + +//static char *twitter_set_display_name( set_t *set, char *value ) +//{ +// return value; +//} + +void twitter_initmodule() +{ + struct prpl *ret = g_new0(struct prpl, 1); + + ret->name = "twitter"; + ret->login = twitter_login; + ret->init = twitter_init; + ret->logout = twitter_logout; + ret->buddy_msg = twitter_buddy_msg; + ret->away_states = twitter_away_states; + ret->set_away = twitter_set_away; + ret->get_info = twitter_get_info; + ret->set_my_name = twitter_set_my_name; + ret->add_buddy = twitter_add_buddy; + ret->remove_buddy = twitter_remove_buddy; + ret->chat_msg = twitter_chat_msg; + ret->chat_invite = twitter_chat_invite; + ret->chat_leave = twitter_chat_leave; + ret->chat_with = twitter_chat_with; + ret->keepalive = twitter_keepalive; + ret->add_permit = twitter_add_permit; + ret->rem_permit = twitter_rem_permit; + ret->add_deny = twitter_add_deny; + ret->rem_deny = twitter_rem_deny; + ret->send_typing = twitter_send_typing; + ret->handle_cmp = g_strcasecmp; + + register_protocol(ret); +} + -- cgit v1.2.3 From 62d2cfb0b7b5e7f3eda9ca13b1877d3ad74fcd5e Mon Sep 17 00:00:00 2001 From: Geert Mulders Date: Thu, 25 Mar 2010 22:31:27 +0100 Subject: Added option to get tweeds either through groupchat or privmes. --- protocols/twitter/twitter.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 1cc7eaeb..b6b23fa5 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -28,8 +28,8 @@ /** - * * Main loop function - * */ + * Main loop function + */ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) { struct im_connection *ic = data; @@ -37,6 +37,11 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) if ((ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN) return 0; + // If the user uses multiple private message windows we need to get the + // users buddies. + if (!set_getbool( &ic->acc->set, "use_groupchat" )) + twitter_get_statuses_friends(ic, -1); + // Do stuff.. twitter_get_home_timeline(ic, -1); @@ -47,6 +52,8 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) static void twitter_init( account_t *acc ) { + set_t *s; + s = set_add( &acc->set, "use_groupchat", "false", set_eval_bool, acc ); } /** @@ -57,7 +64,7 @@ static void twitter_login( account_t *acc ) { struct im_connection *ic = imcb_new( acc ); struct twitter_data *td = g_new0( struct twitter_data, 1 ); - + td->user = acc->user; td->pass = acc->pass; td->home_timeline_id = 0; @@ -67,11 +74,6 @@ static void twitter_login( account_t *acc ) // Set the status to logged in. ic->flags = OPT_LOGGED_IN; - // Try to get the buddies... - //twitter_get_friends_ids(ic, -1); - - //twitter_get_home_timeline(ic, -1); - // Run this once. After this queue the main loop function. twitter_main_loop(ic, -1, 0); @@ -80,6 +82,8 @@ static void twitter_login( account_t *acc ) imcb_log( ic, "Connecting to twitter" ); imcb_connected(ic); + + twitter_connections = g_slist_append( twitter_connections, ic ); } /** @@ -96,6 +100,8 @@ static void twitter_logout( struct im_connection *ic ) { g_free( td ); } + + twitter_connections = g_slist_remove( twitter_connections, ic ); } /** @@ -103,8 +109,11 @@ static void twitter_logout( struct im_connection *ic ) */ static int twitter_buddy_msg( struct im_connection *ic, char *who, char *message, int away ) { - imcb_log( ic, "In twitter_buddy_msg..."); - twitter_post_status(ic, message); + // Let's just update the status. +// if ( g_strcasecmp(who, ic->acc->user) == 0 ) + twitter_post_status(ic, message); +// else +// twitter_direct_messages_new(ic, who, message); return( 0 ); } @@ -123,11 +132,6 @@ static void twitter_set_away( struct im_connection *ic, char *state, char *messa static void twitter_set_my_name( struct im_connection *ic, char *info ) { - imcb_log( ic, "In twitter_set_my_name..." ); -// char * aap = twitter_http("http://gertje.org", NULL, ic, 1, "geert", "poep", NULL, 0); - -// imcb_log( ic, aap ); -// g_free(aap); } static void twitter_get_info(struct im_connection *ic, char *who) @@ -217,5 +221,8 @@ void twitter_initmodule() ret->handle_cmp = g_strcasecmp; register_protocol(ret); + + // Initialise the twitter_connections GSList. + twitter_connections = NULL; } -- cgit v1.2.3 From 2abceca711403e8e3308213954b4477ceecd4282 Mon Sep 17 00:00:00 2001 From: Geert Mulders Date: Tue, 6 Apr 2010 19:25:51 +0200 Subject: Updates made as a result to the comments on the review. --- protocols/twitter/twitter.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index b6b23fa5..fb7acc12 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -34,7 +34,9 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) { struct im_connection *ic = data; // Check if we are still logged in... - if ((ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN) + // We are logged in if the flag says so and the connection is still in the connections list. + if ((ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN + && !g_slist_find( twitter_connections, ic )) return 0; // If the user uses multiple private message windows we need to get the @@ -54,6 +56,7 @@ static void twitter_init( account_t *acc ) { set_t *s; s = set_add( &acc->set, "use_groupchat", "false", set_eval_bool, acc ); + s->flags |= ACC_SET_OFFLINE_ONLY; } /** @@ -71,17 +74,15 @@ static void twitter_login( account_t *acc ) ic->proto_data = td; - // Set the status to logged in. - ic->flags = OPT_LOGGED_IN; + imcb_log( ic, "Connecting to twitter" ); + imcb_connected(ic); // Run this once. After this queue the main loop function. twitter_main_loop(ic, -1, 0); // Queue the main_loop - b_timeout_add(60000, twitter_main_loop, ic); - - imcb_log( ic, "Connecting to twitter" ); - imcb_connected(ic); + // Save the return value, so we can remove the timeout on logout. + td->main_loop_id = b_timeout_add(60000, twitter_main_loop, ic); twitter_connections = g_slist_append( twitter_connections, ic ); } @@ -96,6 +97,9 @@ static void twitter_logout( struct im_connection *ic ) // Set the status to logged out. ic->flags = 0; + // Remove the main_loop function from the function queue. + b_event_remove(td->main_loop_id); + if( td ) { g_free( td ); @@ -148,6 +152,8 @@ static void twitter_remove_buddy( struct im_connection *ic, char *who, char *gro static void twitter_chat_msg( struct groupchat *c, char *message, int flags ) { + if( c && message ) + twitter_post_status(c->ic, message); } static void twitter_chat_invite( struct groupchat *c, char *who, char *message ) -- cgit v1.2.3 From d5690197326bad1090dbb9f6bfc95470b479fe6b Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Wed, 7 Apr 2010 01:27:51 +0100 Subject: A little more cleanup. --- protocols/twitter/twitter.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index fb7acc12..d4e2ce3e 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -35,8 +35,8 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) struct im_connection *ic = data; // Check if we are still logged in... // We are logged in if the flag says so and the connection is still in the connections list. - if ((ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN - && !g_slist_find( twitter_connections, ic )) + if (!g_slist_find( twitter_connections, ic ) || + (ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN) return 0; // If the user uses multiple private message windows we need to get the @@ -68,13 +68,15 @@ static void twitter_login( account_t *acc ) struct im_connection *ic = imcb_new( acc ); struct twitter_data *td = g_new0( struct twitter_data, 1 ); + twitter_connections = g_slist_append( twitter_connections, ic ); + td->user = acc->user; td->pass = acc->pass; td->home_timeline_id = 0; ic->proto_data = td; - imcb_log( ic, "Connecting to twitter" ); + imcb_log( ic, "Connecting to Twitter" ); imcb_connected(ic); // Run this once. After this queue the main loop function. @@ -83,8 +85,6 @@ static void twitter_login( account_t *acc ) // Queue the main_loop // Save the return value, so we can remove the timeout on logout. td->main_loop_id = b_timeout_add(60000, twitter_main_loop, ic); - - twitter_connections = g_slist_append( twitter_connections, ic ); } /** -- cgit v1.2.3 From 1014caba0ae2c737e35b8f51cafe77c1967e6b67 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Wed, 7 Apr 2010 01:46:38 +0100 Subject: In groupchat mode, make contacts show up in the room instead of in &bitlbee. And clean up the room when disabling the Twitter account. --- protocols/twitter/twitter.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index d4e2ce3e..f62aeada 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -100,6 +100,8 @@ static void twitter_logout( struct im_connection *ic ) // Remove the main_loop function from the function queue. b_event_remove(td->main_loop_id); + imcb_chat_free(td->home_timeline_gc); + if( td ) { g_free( td ); -- cgit v1.2.3 From 91cec2ff02f956ec248dae6c8b8939f263ff8cfd Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Wed, 7 Apr 2010 22:38:56 +0100 Subject: It'd be nice to not crash when the user goes away. :-) Don't export no-op set_away() funcs/etc and make nogaim detect that and give up in time. --- protocols/twitter/twitter.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index f62aeada..812e0796 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -126,16 +126,6 @@ static int twitter_buddy_msg( struct im_connection *ic, char *who, char *message /** * */ -static GList *twitter_away_states( struct im_connection *ic ) -{ - static GList *l = NULL; - return l; -} - -static void twitter_set_away( struct im_connection *ic, char *state, char *message ) -{ -} - static void twitter_set_my_name( struct im_connection *ic, char *info ) { } @@ -210,8 +200,6 @@ void twitter_initmodule() ret->init = twitter_init; ret->logout = twitter_logout; ret->buddy_msg = twitter_buddy_msg; - ret->away_states = twitter_away_states; - ret->set_away = twitter_set_away; ret->get_info = twitter_get_info; ret->set_my_name = twitter_set_my_name; ret->add_buddy = twitter_add_buddy; -- cgit v1.2.3 From 37d84b32ca7f02f2e3b05858e090e2470b8c479b Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Thu, 8 Apr 2010 01:51:16 +0100 Subject: Don't free the Twitter chatroom if there isn't one.. --- protocols/twitter/twitter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 812e0796..dcbcfdfb 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -100,7 +100,8 @@ static void twitter_logout( struct im_connection *ic ) // Remove the main_loop function from the function queue. b_event_remove(td->main_loop_id); - imcb_chat_free(td->home_timeline_gc); + if(td->home_timeline_gc) + imcb_chat_free(td->home_timeline_gc); if( td ) { -- cgit v1.2.3 From 16592d8422bbd7acdf39d29525e580fb82d47c36 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Fri, 9 Apr 2010 02:11:10 +0100 Subject: If the user leaves the Twitter channel, allow that. Recreate it when new tweets come in. --- protocols/twitter/twitter.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index dcbcfdfb..8502cd6f 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -155,6 +155,15 @@ static void twitter_chat_invite( struct groupchat *c, char *who, char *message ) static void twitter_chat_leave( struct groupchat *c ) { + struct twitter_data *td = c->ic->proto_data; + + if( c != td->home_timeline_gc ) + return; /* WTF? */ + + /* If the user leaves the channel: Fine. Rejoin him/her once new + tweets come in. */ + imcb_chat_free(td->home_timeline_gc); + td->home_timeline_gc = NULL; } static struct groupchat *twitter_chat_with( struct im_connection *ic, char *who ) -- cgit v1.2.3 From 3e69802454295ffbfbbbe9bca4fcd226b5b63b28 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Tue, 13 Apr 2010 14:51:05 +0200 Subject: Use full name information of Twitter buddies. --- protocols/twitter/twitter.c | 1 + 1 file changed, 1 insertion(+) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 8502cd6f..5027eb74 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -33,6 +33,7 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) { struct im_connection *ic = data; + // Check if we are still logged in... // We are logged in if the flag says so and the connection is still in the connections list. if (!g_slist_find( twitter_connections, ic ) || -- cgit v1.2.3 From 3bd4a9327bb2c7c662e6d385b3bf6903ca8ca09a Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Tue, 13 Apr 2010 19:36:16 +0200 Subject: Suppress HTTP error messages unless we get five or more in a row. --- protocols/twitter/twitter.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 5027eb74..727eff91 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -35,9 +35,7 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) struct im_connection *ic = data; // Check if we are still logged in... - // We are logged in if the flag says so and the connection is still in the connections list. - if (!g_slist_find( twitter_connections, ic ) || - (ic->flags & OPT_LOGGED_IN) != OPT_LOGGED_IN) + if (!g_slist_find( twitter_connections, ic )) return 0; // If the user uses multiple private message windows we need to get the @@ -78,7 +76,6 @@ static void twitter_login( account_t *acc ) ic->proto_data = td; imcb_log( ic, "Connecting to Twitter" ); - imcb_connected(ic); // Run this once. After this queue the main loop function. twitter_main_loop(ic, -1, 0); -- cgit v1.2.3 From e88fbe272c097066e538d670fe8fa907e9847321 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Fri, 16 Apr 2010 01:10:10 +0200 Subject: Added a meta-contact twitter_$username and replaced the "use_groupchat" setting with a "mode" setting which also allows for a mode where everything just comes from the meta-contact. Tweets should now go to that user or to the channel (if available). Messages to others become DMs. --- protocols/twitter/twitter.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 727eff91..29be8a96 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -40,7 +40,7 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) // If the user uses multiple private message windows we need to get the // users buddies. - if (!set_getbool( &ic->acc->set, "use_groupchat" )) + if (g_strcasecmp(set_getstr(&ic->acc->set, "mode"), "many") == 0) twitter_get_statuses_friends(ic, -1); // Do stuff.. @@ -50,11 +50,21 @@ gboolean twitter_main_loop(gpointer data, gint fd, b_input_condition cond) return (ic->flags & OPT_LOGGED_IN) == OPT_LOGGED_IN; } +static char *set_eval_mode( set_t *set, char *value ) +{ + if( g_strcasecmp( value, "one" ) == 0 || + g_strcasecmp( value, "many" ) == 0 || + g_strcasecmp( value, "char" ) == 0 ) + return value; + else + return NULL; +} static void twitter_init( account_t *acc ) { set_t *s; - s = set_add( &acc->set, "use_groupchat", "false", set_eval_bool, acc ); + + s = set_add( &acc->set, "mode", "one", set_eval_mode, acc ); s->flags |= ACC_SET_OFFLINE_ONLY; } @@ -66,6 +76,7 @@ static void twitter_login( account_t *acc ) { struct im_connection *ic = imcb_new( acc ); struct twitter_data *td = g_new0( struct twitter_data, 1 ); + char name[strlen(acc->user)+9]; twitter_connections = g_slist_append( twitter_connections, ic ); @@ -83,6 +94,10 @@ static void twitter_login( account_t *acc ) // Queue the main_loop // Save the return value, so we can remove the timeout on logout. td->main_loop_id = b_timeout_add(60000, twitter_main_loop, ic); + + sprintf( name, "twitter_%s", acc->user ); + imcb_add_buddy( ic, name, NULL ); + imcb_buddy_status( ic, name, OPT_LOGGED_IN, NULL, NULL ); } /** @@ -114,11 +129,12 @@ static void twitter_logout( struct im_connection *ic ) */ static int twitter_buddy_msg( struct im_connection *ic, char *who, char *message, int away ) { - // Let's just update the status. -// if ( g_strcasecmp(who, ic->acc->user) == 0 ) + if (g_strncasecmp(who, "twitter_", 8) == 0 && + g_strcasecmp(who + 8, ic->acc->user) == 0) twitter_post_status(ic, message); -// else -// twitter_direct_messages_new(ic, who, message); + else + twitter_direct_messages_new(ic, who, message); + return( 0 ); } -- cgit v1.2.3 From db57e7c0d4a88e2a2b0862afa20a1255dfffc58d Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Mon, 19 Apr 2010 15:08:34 +0200 Subject: 1.2.6a. I fail. :-( The 1.2.6 I just released has a groupchat mode in the Twitter module that doesn't actually work... --- protocols/twitter/twitter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'protocols/twitter/twitter.c') diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 29be8a96..726c7cb1 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -54,7 +54,7 @@ static char *set_eval_mode( set_t *set, char *value ) { if( g_strcasecmp( value, "one" ) == 0 || g_strcasecmp( value, "many" ) == 0 || - g_strcasecmp( value, "char" ) == 0 ) + g_strcasecmp( value, "chat" ) == 0 ) return value; else return NULL; -- cgit v1.2.3