🦕

DenoからSlackのWebhookにメッセージ投げる

2021/04/27に公開

最低限の実装
ログ投げとかに使う

.envファイルにWebHookリンク書いておく

slackWebHook = "https://hooks.slack.com/services/〜"

本体

import "https://deno.land/x/dotenv/load.ts";

class HTTPError extends Error { }

export default class Slack {
    slackWebHook: string;

    constructor() {
        this.slackWebHook = Deno.env.get('slackWebHook') ?? "";
    }

    async post(message: string) {
        const payload = {
            "username": "<<ボットのユーザ名>>",
            "icon_emoji": ":<<emoji_of_bot>>:",
            "text": message
        }
        const options = {
            method: 'POST',
            body: `${JSON.stringify(payload)}`,
        }
        const response = await fetch(this.slackWebHook, options);
        if (!response.ok) {
            response.text().then((message) => {
                throw new HTTPError(`${response.status} : ${response.statusText} ${message}`)
            })
        }
    }
}

呼び出し側

import Slack from "./slack.ts"
slack.post(`ふげほが`)

Discussion