示例#1
0
void prplcb_conv_chat_msg( PurpleConversation *conv, const char *who, const char *message, PurpleMessageFlags flags, time_t mtime )
{
	struct groupchat *gc = conv->ui_data;
	PurpleBuddy *buddy;
	
	/* ..._SEND means it's an outgoing message, no need to echo those. */
	if( flags & PURPLE_MESSAGE_SEND )
		return;
	
	buddy = purple_find_buddy( conv->account, who );
	if( buddy != NULL )
		who = purple_buddy_get_name( buddy );
	
	imcb_chat_msg( gc, who, (char*) message, 0, mtime );
}
示例#2
0
/* Generic handler for IM or chat messages, covers write_chat, write_im and write_conv */
static void handle_conv_msg(PurpleConversation *conv, const char *who, const char *message, guint32 bee_flags, time_t mtime)
{
	struct im_connection *ic = purple_ic_by_pa(conv->account);
	struct groupchat *gc = conv->ui_data;
	PurpleBuddy *buddy;

	buddy = purple_find_buddy(conv->account, who);
	if (buddy != NULL) {
		who = purple_buddy_get_name(buddy);
	}

	if (conv->type == PURPLE_CONV_TYPE_IM) {
		imcb_buddy_msg(ic, (char *) who, (char *) message, bee_flags, mtime);
	} else if (gc) {
		imcb_chat_msg(gc, who, (char *) message, bee_flags, mtime);
	}
}
示例#3
0
文件: skype.c 项目: GRMrGecko/bitlbee
static void skype_parse_chatmessage_said_emoted(struct im_connection *ic, struct groupchat *gc, char *body)
{
	struct skype_data *sd = ic->proto_data;
	char buf[IRC_LINE_SIZE];
	if (!strcmp(sd->type, "SAID")) {
		if (!sd->is_edit)
			g_snprintf(buf, IRC_LINE_SIZE, "%s", body);
		else {
			g_snprintf(buf, IRC_LINE_SIZE, "%s %s", set_getstr(&ic->acc->set, "edit_prefix"), body);
			sd->is_edit = 0;
		}
	} else
		g_snprintf(buf, IRC_LINE_SIZE, "/me %s", body);
	if (!gc)
		/* Private message */
		imcb_buddy_msg(ic, sd->handle, buf, 0, 0);
	else
		/* Groupchat message */
		imcb_chat_msg(gc, sd->handle, buf, 0, 0);
}