@slack/client
Version:
A library for creating a Slack client
344 lines (298 loc) • 13.4 kB
JavaScript
/**
* API Facet to make calls to methods in the conversations namespace.
*
* This provides functions to call:
* - archive: {@link https://api.slack.com/methods/conversations.archive|conversations.archive}
* - close: {@link https://api.slack.com/methods/conversations.close|conversations.close}
* - create: {@link https://api.slack.com/methods/conversations.create|conversations.create}
* - history: {@link https://api.slack.com/methods/conversations.history|conversations.history}
* - info: {@link https://api.slack.com/methods/conversations.info|conversations.info}
* - invite: {@link https://api.slack.com/methods/conversations.invite|conversations.invite}
* - join: {@link https://api.slack.com/methods/conversations.join|conversations.join}
* - kick: {@link https://api.slack.com/methods/conversations.kick|conversations.kick}
* - leave: {@link https://api.slack.com/methods/conversations.leave|conversations.leave}
* - list: {@link https://api.slack.com/methods/conversations.list|conversations.list}
* - members: {@link https://api.slack.com/methods/conversations.members|conversations.members}
* - open: {@link https://api.slack.com/methods/conversations.open|conversations.open}
* - rename: {@link https://api.slack.com/methods/conversations.rename|conversations.rename}
* - replies: {@link https://api.slack.com/methods/conversations.replies|conversations.replies}
* - setPurpose: {@link https://api.slack.com/methods/conversations.setPurpose|conversations.setPurpose}
* - setTopic: {@link https://api.slack.com/methods/conversations.setTopic|conversations.setTopic}
* - unarchive: {@link https://api.slack.com/methods/conversations.unarchive|conversations.unarchive}
*
*/
/**
* @constructor
*/
function ConversationsFacet(makeAPICall) {
this.name = 'conversations';
this.makeAPICall = makeAPICall;
}
/**
* Archives a conversation.
* @see {@link https://api.slack.com/methods/conversations.archive|conversations.archive}
*
* @param {?} channel - ID of conversation to archive
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.archive = function archive(channel, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.archive', requiredArgs, null, optCb);
};
/**
* Closes a direct message or multi-person direct message.
* @see {@link https://api.slack.com/methods/conversations.close|conversations.close}
*
* @param {?} channel - Conversation to close.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.close = function close(channel, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.close', requiredArgs, null, optCb);
};
/**
* Initiates a public or private channel-based conversation
* @see {@link https://api.slack.com/methods/conversations.create|conversations.create}
*
* @param {?} name - Name of the public or private channel to create
* @param {Object=} opts
* @param {?} opts.is_private - Create a private channel instead of a public one
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.create = function create(name, opts, optCb) {
var requiredArgs = {
name: name
};
return this.makeAPICall('conversations.create', requiredArgs, opts, optCb);
};
/**
* Fetches a conversation's history of messages and events.
* @see {@link https://api.slack.com/methods/conversations.history|conversations.history}
*
* @param {?} channel - Conversation ID to fetch history for.
* @param {Object=} opts
* @param {?} opts.latest - End of time range of messages to include in results.
* @param {?} opts.oldest - Start of time range of messages to include in results.
* @param {?} opts.cursor - Paginate through collections of data by setting the cursor parameter to
* a next_cursor attribute returned by a previous request's response_metadata. Default value fetches
* the first "page" of the collection. See pagination for more detail.
* @param {?} opts.limit - The maximum number of items to return. Fewer than the requested number of
* items may be returned, even if the end of the users list hasn't been reached.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.history = function history(channel, opts, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.history', requiredArgs, opts, optCb);
};
/**
* Retrieve information about a conversation.
* @see {@link https://api.slack.com/methods/conversations.info|conversations.info}
*
* @param {?} channel - Channel to get info on
* @param {Object=} opts
* @param {?} opts.include_locale - Set this to `true` to receive the locale for this conversation.
* Defaults to `false`
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.info = function info(channel, opts, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.info', requiredArgs, opts, optCb);
};
/**
* Invites users to a channel.
* @see {@link https://api.slack.com/methods/conversations.invite|conversations.invite}
*
* @param {?} channel - The ID of the public or private channel to invite user(s) to.
* @param {?} users - A comma separated list of user IDs. Up to 30 users may be listed.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.invite = function invite(channel, users, optCb) {
var requiredArgs = {
channel: channel,
users: users
};
return this.makeAPICall('conversations.invite', requiredArgs, null, optCb);
};
/**
* Joins an existing conversation.
* @see {@link https://api.slack.com/methods/conversations.join|conversations.join}
*
* @param {?} channel - ID of conversation to join
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.join = function join(channel, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.join', requiredArgs, null, optCb);
};
/**
* Removes a user from a conversation.
* @see {@link https://api.slack.com/methods/conversations.kick|conversations.kick}
*
* @param {?} channel - ID of conversation to remove user from.
* @param {?} user - User to remove from channel.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.kick = function kick(channel, user, optCb) {
var requiredArgs = {
channel: channel,
user: user
};
return this.makeAPICall('conversations.kick', requiredArgs, null, optCb);
};
/**
* Leaves a channel.
* @see {@link https://api.slack.com/methods/conversations.leave|conversations.leave}
*
* @param {?} channel - Channel to leave
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.leave = function leave(channel, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.leave', requiredArgs, null, optCb);
};
/**
* Lists all conversations in a Slack team.
* @see {@link https://api.slack.com/methods/conversations.list|conversations.list}
*
* @param {Object=} opts
* @param {?} opts.exclude_archived - Set to `true` to exclude archived channels from the list
* @param {?} opts.types - Mix and match channel types by providing a comma-separated list of any
* combination of `public_channel`, `private_channel`, `mpim`, `im`
* @param {?} opts.cursor - Paginate through collections of data by setting the cursor parameter to
* a next_cursor attribute returned by a previous request's response_metadata. Default value fetches
* the first "page" of the collection. See pagination for more detail.
* @param {?} opts.limit - The maximum number of items to return. Fewer than the requested number of
* items may be returned, even if the end of the users list hasn't been reached.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.list = function list(opts, optCb) {
return this.makeAPICall('conversations.list', null, opts, optCb);
};
/**
* Retrieve members of a conversation.
* @see {@link https://api.slack.com/methods/conversations.members|conversations.members}
*
* @param {?} channel - ID of the conversation to retrieve members for
* @param {Object=} opts
* @param {?} opts.cursor - Paginate through collections of data by setting the cursor parameter to
* a next_cursor attribute returned by a previous request's response_metadata. Default value fetches
* the first "page" of the collection. See pagination for more detail.
* @param {?} opts.limit - The maximum number of items to return. Fewer than the requested number of
* items may be returned, even if the end of the users list hasn't been reached.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.members = function members(channel, opts, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.members', requiredArgs, opts, optCb);
};
/**
* Opens or resumes a direct message or multi-person direct message.
* @see {@link https://api.slack.com/methods/conversations.open|conversations.open}
*
* @param {Object=} opts
* @param {?} opts.channel - Resume a conversation by supplying an im or mpim's ID. Or provide the
* users field instead.
* @param {?} opts.return_im - Boolean, indicates you want the full IM channel definition in the
* response.
* @param {?} opts.users - Comma separated lists of users. If only one user is included, this
* creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message
* is returned. Supply a channel when not supplying users.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.open = function open(opts, optCb) {
return this.makeAPICall('conversations.open', null, opts, optCb);
};
/**
* Renames a conversation.
* @see {@link https://api.slack.com/methods/conversations.rename|conversations.rename}
*
* @param {?} channel - ID of conversation to rename
* @param {?} name - New name for conversation.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.rename = function rename(channel, name, optCb) {
var requiredArgs = {
channel: channel,
name: name
};
return this.makeAPICall('conversations.rename', requiredArgs, null, optCb);
};
/**
* Retrieve a thread of messages posted to a conversation
* @see {@link https://api.slack.com/methods/conversations.replies|conversations.replies}
*
* @param {?} channel - Conversation ID to fetch thread from
* @param {?} ts - Unique identifier of a thread's parent message
* @param {Object=} opts
* @param {?} opts.cursor - Paginate through collections of data by setting the cursor parameter to
* a next_cursor attribute returned by a previous request's response_metadata. Default value fetches
* the first "page" of the collection. See pagination for more detail.
* @param {?} opts.limit - The maximum number of items to return. Fewer than the requested number of
* items may be returned, even if the end of the users list hasn't been reached.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.replies = function replies(channel, ts, opts, optCb) {
var requiredArgs = {
channel: channel,
ts: ts
};
return this.makeAPICall('conversations.replies', requiredArgs, opts, optCb);
};
/**
* Sets the purpose for a conversation.
* @see {@link https://api.slack.com/methods/conversations.setPurpose|conversations.setPurpose}
*
* @param {?} channel - Conversation to set the purpose of
* @param {?} purpose - A new, specialer purpose
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.setPurpose = function setPurpose(channel, purpose, optCb) {
var requiredArgs = {
channel: channel,
purpose: purpose
};
return this.makeAPICall('conversations.setPurpose', requiredArgs, null, optCb);
};
/**
* Sets the topic for a conversation.
* @see {@link https://api.slack.com/methods/conversations.setTopic|conversations.setTopic}
*
* @param {?} channel - Conversation to set the topic of
* @param {?} topic - The new topic string. Does not support formatting or linkification.
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.setTopic = function setTopic(channel, topic, optCb) {
var requiredArgs = {
channel: channel,
topic: topic
};
return this.makeAPICall('conversations.setTopic', requiredArgs, null, optCb);
};
/**
* Reverses conversation archival.
* @see {@link https://api.slack.com/methods/conversations.unarchive|conversations.unarchive}
*
* @param {?} channel - ID of conversation to unarchive
* @param {function=} optCb Optional callback, if not using promises.
*/
ConversationsFacet.prototype.unarchive = function unarchive(channel, optCb) {
var requiredArgs = {
channel: channel
};
return this.makeAPICall('conversations.unarchive', requiredArgs, null, optCb);
};
module.exports = ConversationsFacet;