Skip to content

Commit

Permalink
fix: 新增文件上传
Browse files Browse the repository at this point in the history
  • Loading branch information
yusheng929 committed Sep 24, 2024
1 parent 2f868fa commit 307e43a
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 3 deletions.
41 changes: 41 additions & 0 deletions Ling.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import http from 'http'
import fs from 'fs'
import path from 'path'
import { logger } from 'node-karin'

export default class Ling {
constructor() {
}
/**
* 下载文件到指定路径,如果文件已存在则替换
* @param {string} url - 文件的URL
* @param {string} downloadPath - 文件下载的路径
*/
async downloadFile(url, downloadPath) {
try {
const dir = path.dirname(downloadPath)

if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true })
}
await new Promise((resolve, reject) => {
const file = fs.createWriteStream(downloadPath)

http.get(url, (response) => {
if (response.statusCode === 200) {
response.pipe(file)
} else {
reject(new Error(`Failed to download file: ${response.statusCode}`))
}
file.on('finish', () => {
file.close(resolve)
})
}).on('error', (err) => {
fs.unlink(downloadPath, () => reject(new Error(err.message)))
})
})
} catch (error) {
logger.error('文件下载失败:', error.message)
}
}
}
44 changes: 44 additions & 0 deletions apps/QuickCode/File.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { karin, segment, common } from 'node-karin'
export const FileDownload = karin.command(/^文件下载/, async (e) => {
e.reply('请发送文件', {at: true})
const event = await karin.ctx(e)
let file = JSON.parse(event.msg)
let Path = `${e.msg.replace(/文件下载/, '').trim() || process.cwd()}/${file.name}`
if (!(file.type === 'file')) return e.reply('未识别到文件,取消操作', {at: true})
let url
if (!e.isGroup) {
url = await e.bot.super.pickFriend(e.user_id).getFileUrl(file.fid)
} else {
url = await e.bot.super.pickGroup(e.group_id).getFileUrl(file.fid)
}
if (!url) return e.reply('获取链接失败', {at: true})
await e.reply(`检测到文件,开始下载...\n文件的链接为:\n${url}\n保存的路径为:\n${Path}`)
try {
await common.downFile(url, Path)
await e.reply('安装完成')
} catch (error) {
logger.error(`文件下载错误:${error.message}`)
await e.reply(`文件下载错误:${error.message}`, true)
}
}, { name: '文件下载', priority: '-1' })
export const UploadDownload = karin.command(/^文件上传/, async (e) => {
e.reply('请发送路径', {at: true})
const event = await karin.ctx(e)
let Path = `${e.msg.replace(/文件下载/, '').trim() || process.cwd()}/${file.name}`
if (!(file.type === 'file')) return e.reply('未识别到文件,取消操作', {at: true})
let url
if (!e.isGroup) {
url = await e.bot.super.pickFriend(e.user_id).getFileUrl(file.fid)
} else {
url = await e.bot.super.pickGroup(e.group_id).getFileUrl(file.fid)
}
if (!url) return e.reply('获取链接失败', {at: true})
await e.reply(`检测到文件,开始下载...\n文件的链接为:\n${url}\n保存的路径为:\n${Path}`)
try {
await common.downFile(url, Path)
await e.reply('安装完成')
} catch (error) {
logger.error(`文件下载错误:${error.message}`)
await e.reply(`文件下载错误:${error.message}`, true)
}
}, { name: '文件下载', priority: '-1' })
10 changes: 8 additions & 2 deletions apps/测试(仅测试,无功能).js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { karin, segment, common, Cfg, YamlEditor } from 'node-karin'
import { Config } from '#components'
export const test = karin.command(/^测试/, async (e) => {
let msg = await e.bot.GetFriendList()
console.log(msg)
let Path = e.msg.replace(/测试/, '').trim()
e.reply('请发送文件', {at: true})
console.log(`${process.cwd()}`)
const event = await karin.ctx(e)
let file = JSON.parse(event.msg)
console.log(file)
console.log(file.type)
if (!(file.type === 'file')) return e.reply('未识别到文件,取消操作', {at: true})
}, { name: '测试', priority: '-1' })
2 changes: 2 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { Version, Config } from '#components'
import { logger } from 'node-karin'

global.Ling = new (await import("./Ling.js")).default

logger.info('-----------------')
logger.info(`${Version.pluginName}${Config.package.version}初始化~`)
logger.info('-------^_^-------')
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
},
"karin": {
"apps": [
"apps/events"
"apps/events",
"apps/QuickCode"
]
}
}

0 comments on commit 307e43a

Please sign in to comment.