import axios from 'axios'
import { readFileSync } from 'fs'
import {
getProcessedVersion,
isDevBuild,
getDownloadUrl,
generateDownloadLinksMarkdown,
getGitCommitHash
} from './version-utils.mjs'
const chat_id = '@MihomoPartyChannel'
const pkg = readFileSync('package.json', 'utf-8')
const changelog = readFileSync('changelog.md', 'utf-8')
const { version: packageVersion } = JSON.parse(pkg)
// 获取处理后的版本号
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 `${line.replace('## ', '')}`
} else if (line.startsWith('### ')) {
return `${line.replace('### ', '')}`
} else if (line.startsWith('#### ')) {
return `${line.replace('#### ', '')}`
} else {
let processedLine = line.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => {
const encodedUrl = encodeURI(url)
return `${text}`
})
processedLine = processedLine.replace(/\*\*([^*]+)\*\*/g, '$1')
return processedLine
}
})
.join('\n')
}
let content = ''
if (isDevRelease) {
// 版本号中提取commit hash
const shortCommitSha = getGitCommitHash(true)
const commitSha = getGitCommitHash(false)
content = `🚧 Clash Party Dev Build 开发版本发布\n\n`
content += `基于版本: ${version}\n`
content += `提交哈希: ${shortCommitSha}\n\n`
content += `更新日志:\n`
content += convertMarkdownToTelegramHTML(changelog)
content += '\n\n⚠️ 注意:这是开发版本,可能存在不稳定性,仅供测试使用\n'
} else {
// 正式版本通知
content = `🌟 Clash Party v${version} 正式发布\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 通知发送成功`)