1import{serve}from"https://deno.land/std@0.224.0/http/server.ts";
2
3interfaceSlackPayload{
4channel:string;
5text:string;
6blocks?:Record<string,unknown>[];
7threadTs?:string;
8}
9
10constSLACK_TOKEN=Deno.env.get("SLACK_BOT_TOKEN")!;
11constAPI_BASE="https://slack.com/api/chat.postMessage";
12
13asyncfunctionsendAlert(req:Request):Promise<Response>{
14if(req.method!=="POST"){
15returnnewResponse(null,{status:405});
16}
17
18constpayload:SlackPayload=awaitreq.json();
19constres=awaitfetch(API_BASE,{
20method:"POST",
21headers:{
22Authorization:`Bearer ${SLACK_TOKEN}`,
23"Content-Type":"application/json",
24},
25body:JSON.stringify({
26channel:payload.channel,
27text:payload.text,
28blocks:payload.blocks,
29thread_ts:payload.threadTs,
30}),
31});
32
33constjson=awaitres.json();
34if(!json.ok){
35returnnewResponse(
36JSON.stringify({error:json.error}),
37{status:502,headers:{"content-type":"application/json"}}
38);
39}
40
41returnnewResponse(JSON.stringify({ts:json.ts}),{
42headers:{"content-type":"application/json"},
43});
44}
45
46serve(sendAlert,{port:8080});