sources/new-message-in-channels/new-message-in-channels.mjs
import common from "../common/base.mjs"; import constants from "../common/constants.mjs"; import sampleEmit from "./test-event.mjs"; export default { ...common, key: "slack-new-message-in-channels", name: "New Message In Channels (Instant)", version: "1.0.25", description: "Emit new event when a new message is posted to one or more channels", type: "source", dedupe: "unique", props: { ...common.props, conversations: { propDefinition: [ common.props.slack, "conversation", ], type: "string[]", label: "Channels", description: "Select one or more channels to monitor for new messages.", optional: true, }, slackApphook: { type: "$.interface.apphook", appProp: "slack", async eventNames() { return this.conversations || [ "message", ]; }, }, resolveNames: { propDefinition: [ common.props.slack, "resolveNames", ], }, ignoreBot: { propDefinition: [ common.props.slack, "ignoreBot", ], }, ignoreThreads: { type: "boolean", label: "Ignore replies in threads", description: "Ignore replies to messages in threads", optional: true, }, }, methods: { ...common.methods, getSummary() { return "New message in channel"; }, async processEvent(event) { if (event.type !== "message") { console.log(`Ignoring event with unexpected type "${event.type}"`); return; } if (event.subtype && !constants.ALLOWED_MESSAGE_IN_CHANNEL_SUBTYPES.includes(event.subtype)) { console.log("Ignoring message with subtype."); return; } if ((this.ignoreBot) && (event.subtype == "bot_message" || event.bot_id)) { return; } if (this.ignoreThreads && event.thread_ts) { console.log("Ignoring reply in thread"); return; } if (this.resolveNames) { if (event.user) { event.user_id = event.user; event.user = await this.getUserName(event.user); } else if (event.bot_id) { event.bot = await this.getBotName(event.bot_id); } event.channel_id = event.channel; event.channel = await this.getConversationName(event.channel); if (event.team) { event.team_id = event.team; event.team = await this.getTeamName(event.team); } } return event; }, }, sampleEmit, };