slack/ts/slack.classes.slackmessage.ts

83 lines
1.8 KiB
TypeScript
Raw Permalink Normal View History

2018-09-15 20:23:05 +00:00
import * as plugins from './slack.plugins';
import { SlackAccount } from './slack.classes.slackme';
2017-09-17 13:25:00 +00:00
export interface IAttachmentField {
2018-09-15 20:23:05 +00:00
title: string;
value: string;
short?: boolean;
2017-09-17 13:25:00 +00:00
}
export interface IMessageOptions {
/**
* "Required plain-text summary of the attachment."
*/
2018-09-15 20:23:05 +00:00
fallback?: string;
/**
* a side color
*/
2018-09-15 20:23:05 +00:00
color?: string;
/**
* a message to show above
*/
2018-09-15 20:23:05 +00:00
pretext?: string;
2017-09-17 13:25:00 +00:00
/**
* author name of the attachment
*/
2018-09-15 20:23:05 +00:00
author_name?: string;
2017-09-17 13:25:00 +00:00
/**
* a link to the author
*/
2018-09-15 20:23:05 +00:00
author_link?: string;
2017-09-17 13:25:00 +00:00
/**
* a string to the author
*/
2018-09-15 20:23:05 +00:00
author_icon?: string;
2017-09-17 13:25:00 +00:00
/**
* a title for the attachment
*/
2018-09-15 20:23:05 +00:00
title?: string;
2017-09-17 13:25:00 +00:00
/**
* a link for the title
*/
2018-09-15 20:23:05 +00:00
title_link?: string;
/**
* the main text of the message
*/
2018-09-15 20:23:05 +00:00
text?: string;
fields?: IAttachmentField[];
image_url?: string;
thumb_url?: string;
footer?: string;
footer_icon?: string;
ts?: number;
}
export class SlackMessage {
slackmeRef: SlackAccount;
2018-09-15 20:23:05 +00:00
messageOptions: IMessageOptions;
2019-09-18 10:26:31 +00:00
channel: string;
ts: string;
constructor(messageOptionsArg: IMessageOptions, slackmeArg?: SlackAccount) {
if (slackmeArg) {
2018-09-15 20:23:05 +00:00
this.slackmeRef = slackmeArg;
}
2018-09-15 20:23:05 +00:00
this.messageOptions = messageOptionsArg;
}
2019-09-18 10:26:31 +00:00
async updateAndSend(messageOptionsArg: IMessageOptions) {
this.messageOptions = messageOptionsArg;
await this.sendToRoom(this.channel);
}
2019-09-05 11:08:42 +00:00
async sendToRoom(roomNameArg: string) {
2019-09-18 10:26:31 +00:00
this.channel = roomNameArg;
2018-09-15 20:23:05 +00:00
if (this.slackmeRef) {
2019-09-18 10:26:31 +00:00
const response = await this.slackmeRef.sendMessage(this.messageOptions, roomNameArg, this.ts);
this.ts = response.body.message.ts;
this.channel = response.body.channel;
2019-09-05 11:08:42 +00:00
} else {
throw new Error('you need to set a slackRef before sending the message!');
}
}
}