feat: 支持telegram bot
This commit is contained in:
parent
e5dd79794b
commit
129e4d67c7
@ -1 +1,4 @@
|
|||||||
WEBHOOK_URL=飞书群机器人 webhook 地址
|
BOTS='TELEGRAM'
|
||||||
|
FEISHU_TOKEN=''
|
||||||
|
TELEGRAM_TOKEN=''
|
||||||
|
TELEGRAM_CHAT_ID=''
|
@ -1,25 +1,4 @@
|
|||||||
import {VercelRequest, VercelResponse} from '@vercel/node'
|
import {VercelRequest, VercelResponse} from '@vercel/node'
|
||||||
import fetch from 'node-fetch'
|
|
||||||
|
|
||||||
async function send(content: string) {
|
|
||||||
const body = JSON.stringify({
|
|
||||||
"msg_type": "text",
|
|
||||||
"content": {
|
|
||||||
"text": content
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const res = await fetch(process.env.WEBHOOK_URL, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body,
|
|
||||||
})
|
|
||||||
const data = await res.json()
|
|
||||||
if (data.StatusCode !== 0) {
|
|
||||||
console.error(data.StatusMessage)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMessage(name: string, data: any): string {
|
function handleMessage(name: string, data: any): string {
|
||||||
let action = ''
|
let action = ''
|
||||||
@ -56,10 +35,16 @@ async function main(req: VercelRequest, res: VercelResponse) {
|
|||||||
res.setHeader('Allow', 'POST')
|
res.setHeader('Allow', 'POST')
|
||||||
return res.status(405).end('Method Not Allowed')
|
return res.status(405).end('Method Not Allowed')
|
||||||
}
|
}
|
||||||
|
const bots = (process.env.BOTS || '').split(',').map(v => v.toUpperCase())
|
||||||
try {
|
try {
|
||||||
const product = req.query.product.toString() || 'Unknown'
|
const product = req.query.product.toString() || 'Unknown'
|
||||||
const content = handleMessage(product, req.body)
|
const content = handleMessage(product, req.body)
|
||||||
await send(content)
|
if (bots.indexOf('TELEGRAM') >= 0) {
|
||||||
|
await sendToTelegram(content)
|
||||||
|
}
|
||||||
|
if (bots.indexOf('FEISHU') >= 0) {
|
||||||
|
await sendToFeishu(content)
|
||||||
|
}
|
||||||
return res.status(200).end('ok')
|
return res.status(200).end('ok')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e)
|
20
bot/feishu.ts
Normal file
20
bot/feishu.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
async function sendToFeishu(content: string) {
|
||||||
|
const URL = `https://open.feishu.cn/open-apis/bot/v2/hook/${process.env.FEISHU_TOKEN}`
|
||||||
|
const body = JSON.stringify({
|
||||||
|
"msg_type": "text",
|
||||||
|
"content": {
|
||||||
|
"text": content
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const res = await fetch(URL, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body,
|
||||||
|
})
|
||||||
|
const data = await res.json()
|
||||||
|
if (data.StatusCode !== 0) {
|
||||||
|
console.error(data.StatusMessage)
|
||||||
|
}
|
||||||
|
}
|
15
bot/telegram.ts
Normal file
15
bot/telegram.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
async function sendToTelegram(text: string) {
|
||||||
|
const URL = `https://api.telegram.org/bot${process.env.TELEGRAM_TOKEN}/sendMessage`
|
||||||
|
const body = `chat_id=${process.env.TELEGRAM_CHAT_ID}&text=${text}`
|
||||||
|
const res = await fetch(URL, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
body,
|
||||||
|
})
|
||||||
|
const data = await res.json()
|
||||||
|
if (!data.ok) {
|
||||||
|
console.error(data.StatusMessage)
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"rewrites": [
|
"rewrites": [
|
||||||
{ "source": "/hooks/:product", "destination": "/api/bot/feishu" }
|
{ "source": "/hooks/:product", "destination": "/api/txc" }
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user