# HG changeset patch # User Gary Kramlich # Date 1731232331 21600 # Node ID c574888ce9e2d83ba2af24dc55ef7b449a9fbd6f # Parent 7b3b26faf6ed63d36f9883997d039cf9d7bb497e IRCv3: Add support for sending CTCP ACTION Testing Done: Sent some `/action` commands and verified they showed up properly on the wire and in other clients. When we implement the `/alias` command we will add an alias to `/action` named `/me`. Reviewed at https://reviews.imfreedom.org/r/3646/ diff -r 7b3b26faf6ed -r c574888ce9e2 protocols/ircv3/purpleircv3protocolconversation.c --- a/protocols/ircv3/purpleircv3protocolconversation.c Sun Nov 10 03:49:39 2024 -0600 +++ b/protocols/ircv3/purpleircv3protocolconversation.c Sun Nov 10 03:52:11 2024 -0600 @@ -47,6 +47,7 @@ IbisClient *client = NULL; IbisMessage *ibis_message = NULL; GTask *task = NULL; + const char *contents = NULL; const char *id = NULL; account = purple_conversation_get_account(conversation); @@ -71,9 +72,20 @@ id = purple_conversation_get_name(conversation); } + contents = purple_message_get_contents(message); + ibis_message = ibis_message_new(IBIS_MSG_PRIVMSG); - ibis_message_set_params(ibis_message, id, - purple_message_get_contents(message), NULL); + if(purple_message_get_action(message)) { + IbisCTCPMessage *ctcp_message = NULL; + + ibis_message_set_params(ibis_message, id, NULL); + + ctcp_message = ibis_ctcp_message_new(IBIS_CTCP_ACTION); + ibis_ctcp_message_set_params(ctcp_message, contents, NULL); + ibis_message_set_ctcp_message(ibis_message, ctcp_message); + } else { + ibis_message_set_params(ibis_message, id, contents, NULL); + } client = purple_ircv3_connection_get_client(v3_connection); ibis_client_write(client, ibis_message);