import * as plugins from './plugins.js'; import { type IMessageOptions } from './classes.slackmessage.js'; export class SlackAccount { private postUrl = 'https://slack.com/api/chat.postMessage'; private updateUrl = 'https://slack.com/api/chat.update'; private slackToken: string; constructor(slackTokenArg: string) { this.slackToken = slackTokenArg; } async sendMessage(optionsArg: { messageOptions: IMessageOptions; channelArg: string; ts?: string; mode: 'new' | 'threaded' | 'update'; }) { let requestBody: any = { channel: optionsArg.channelArg, text: optionsArg.messageOptions.text }; if (optionsArg.messageOptions.fields) { requestBody = { ...requestBody, attachments: [ { pretext: optionsArg.messageOptions.pretext, fields: optionsArg.messageOptions.fields, ts: optionsArg.messageOptions.ts, color: optionsArg.messageOptions.color } ] }; } let postUrl = this.postUrl; switch (true) { case optionsArg.ts && optionsArg.mode === 'update': requestBody = { ...requestBody, ts: optionsArg.ts }; postUrl = this.updateUrl; break; case optionsArg.ts && optionsArg.mode === 'threaded': requestBody = { ...requestBody, thread_ts: optionsArg.ts }; break; } const response = await plugins.smartrequest.postJson(postUrl, { headers: { Authorization: `Bearer ${this.slackToken}` }, requestBody }); return response; } }