mirror of
https://gh.catmak.name/https://github.com/mihomo-party-org/mihomo-party
synced 2025-12-27 05:00:30 +08:00
80 lines
2.8 KiB
JavaScript
80 lines
2.8 KiB
JavaScript
import axios from 'axios'
|
|
import { readFileSync } from 'fs'
|
|
import {
|
|
getProcessedVersion,
|
|
isDevBuild,
|
|
getDownloadUrl,
|
|
generateDownloadLinksMarkdown,
|
|
getGitCommitHash
|
|
} from './version-utils.mjs'
|
|
|
|
const chat_id = '@MihomoPartyChannel'
|
|
const changelog = readFileSync('changelog.md', 'utf-8')
|
|
|
|
// 获取处理后的版本号
|
|
const version = getProcessedVersion()
|
|
const releaseType = process.env.RELEASE_TYPE || process.argv[2] || 'release'
|
|
const isDevRelease = releaseType === 'dev' || isDevBuild()
|
|
|
|
function convertMarkdownToTelegramHTML(content) {
|
|
return content
|
|
.split('\n')
|
|
.map((line) => {
|
|
if (line.trim().length === 0) {
|
|
return ''
|
|
} else if (line.startsWith('## ')) {
|
|
return `<b>${line.replace('## ', '')}</b>`
|
|
} else if (line.startsWith('### ')) {
|
|
return `<b>${line.replace('### ', '')}</b>`
|
|
} else if (line.startsWith('#### ')) {
|
|
return `<b>${line.replace('#### ', '')}</b>`
|
|
} else {
|
|
let processedLine = line.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => {
|
|
const encodedUrl = encodeURI(url)
|
|
return `<a href="${encodedUrl}">${text}</a>`
|
|
})
|
|
processedLine = processedLine.replace(/\*\*([^*]+)\*\*/g, '<b>$1</b>')
|
|
return processedLine
|
|
}
|
|
})
|
|
.join('\n')
|
|
}
|
|
|
|
let content = ''
|
|
|
|
if (isDevRelease) {
|
|
// 版本号中提取commit hash
|
|
const shortCommitSha = getGitCommitHash(true)
|
|
const commitSha = getGitCommitHash(false)
|
|
|
|
content = `<b>🚧 <a href="https://github.com/mihomo-party-org/clash-party/releases/tag/dev">Clash Party Dev Build</a> 开发版本发布</b>\n\n`
|
|
content += `<b>基于版本:</b> ${version}\n`
|
|
content += `<b>提交哈希:</b> <a href="https://github.com/mihomo-party-org/clash-party/commit/${commitSha}">${shortCommitSha}</a>\n\n`
|
|
content += `<b>更新日志:</b>\n`
|
|
content += convertMarkdownToTelegramHTML(changelog)
|
|
content += '\n\n<b>⚠️ 注意:这是开发版本,可能存在不稳定性,仅供测试使用</b>\n'
|
|
} else {
|
|
// 正式版本通知
|
|
content = `<b>🌟 <a href="https://github.com/mihomo-party-org/clash-party/releases/tag/v${version}">Clash Party v${version}</a> 正式发布</b>\n\n`
|
|
content += convertMarkdownToTelegramHTML(changelog)
|
|
}
|
|
|
|
// 构建下载链接
|
|
const downloadUrl = getDownloadUrl(isDevRelease, version)
|
|
|
|
const downloadLinksMarkdown = generateDownloadLinksMarkdown(downloadUrl, version)
|
|
content += convertMarkdownToTelegramHTML(downloadLinksMarkdown)
|
|
|
|
await axios.post(`https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
|
|
chat_id,
|
|
text: content,
|
|
link_preview_options: {
|
|
is_disabled: false,
|
|
url: 'https://github.com/mihomo-party-org/clash-party',
|
|
prefer_large_media: true
|
|
},
|
|
parse_mode: 'HTML'
|
|
})
|
|
|
|
console.log(`${isDevRelease ? '开发版本' : '正式版本'}Telegram 通知发送成功`)
|