diff --git a/slack-cmd.c b/slack-cmd.c index 49188fb..e9fb391 100644 --- a/slack-cmd.c +++ b/slack-cmd.c @@ -78,6 +78,7 @@ static PurpleCmdRet send_cmd(PurpleConversation *conv, const gchar *cmd, gchar * /* https://github.com/ErikKalkoken/slackApiDoc/blob/master/chat.command.md */ slack_api_post(sa, send_cmd_cb, conv, "chat.command", "channel", slack_conversation_id(obj), "command", msg->str, "text", args && args[0] ? args[0] : "", NULL); + g_string_free(msg, TRUE); return PURPLE_CMD_RET_OK; @@ -158,6 +159,24 @@ static PurpleCmdRet cmd_getthread(PurpleConversation *conv, const gchar *cmd, gc return PURPLE_CMD_RET_OK; } +static PurpleCmdRet cmd_open(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data) { + SlackAccount *sa = get_slack_account(conv->account); + if (!sa) + return PURPLE_CMD_RET_FAILED; + + SlackObject *obj = slack_conversation_get_conversation(sa, conv); + if (!obj) { + return PURPLE_CMD_RET_FAILED; + } + + gchar *message = g_strconcat("This conversation is available at: https://app.slack.com/client/", sa->team.id, "/", slack_conversation_id(obj), NULL); + slack_write_message(sa, obj, message, PURPLE_MESSAGE_SEND); + g_free(message); + + + return PURPLE_CMD_RET_OK; +} + static GSList *commands = NULL; void slack_cmd_register() { @@ -184,6 +203,10 @@ void slack_cmd_register() { SLACK_PLUGIN_ID, cmd_history, "history: fetch unread previous messages", NULL); commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); + id = purple_cmd_register("open", "", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, + SLACK_PLUGIN_ID, cmd_open, "Provides URL of current conversation", NULL); + commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); + id = purple_cmd_register("edit", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, SLACK_PLUGIN_ID, cmd_edit, "edit [new message]: edit your last message to be new message", NULL); commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));