{/n/'title/': /'Node.js 发送图片到 SGroup QQ API - sendImage & postImage 函数详解/',/n/'description/': /'本文详细解析了使用 Node.js 发送图片到 SGroup QQ API 的两个函数 sendImage 和 postImage,并对代码进行了注释。sendImage 用于发送本地路径的图片,而 postImage 用于发送 Buffer 图片。/',/n/'keywords/': /'SGroup QQ API, Node.js, 图片发送, sendImage, postImage, axios, FormData, Readable/',/n/'content/': /'///'这段代码主要是一个发送图片的功能。下面是对每一行代码的注释:////n//njavascript//nimport { createReadStream } from ///'node:fs///'; // 导入createReadStream方法,用于创建可读流//nimport { Readable } from ///'node:stream///'; // 导入Readable方法,用于创建可读流//nimport FormData from ///'form-data///'; // 导入FormData模块,用于构建请求数据包//nimport axios from ///'axios///'; // 导入axios模块,用于发送HTTP请求////n//n// 非依赖引用//nimport { BotConfigType } from ///'//./types.js///'; // 导入BotConfigType类型////n//n/** 环境配置 *///nconst Acf = {//n sandbox_api: ///'https://sandbox.api.sgroup.qq.com///', // 沙箱环境的API地址//n api: ///'https://api.sgroup.qq.com///', // 正式环境的API地址//n};////n//nlet cfg: BotConfigType; // 定义一个变量cfg,类型为BotConfigType////n//n/**//n * 得到环境api//n * @returns//n *///nfunction getUrl(): string {//n //沙箱环境//n if (cfg.sandbox) return Acf.sandbox_api; // 如果cfg的sandbox属性为true,返回沙箱环境的API地址//n //正式环境//n return Acf.api; // 否则返回正式环境的API地址//n}//n//n/**//n * 创建api配置//n * @param val//n * @returns//n *///n export function createApi(val: BotConfigType): void {//n cfg = val; // 将传入的参数赋值给cfg变量//n return;//n}//n//n/**//n * 发送本地路径的图片//n * @param id 私信传频道id,公信传子频道id//n * @param message {消息编号,图片,内容}//n * @param isGroup 是否是群聊//n * @returns//n *///n export async function sendImage(//n id: string,//n message: {//n msg_id: string;//n file_image: string | Buffer | URL;//n content?: string;//n },//n isGroup: boolean//n): Promise<any> {//n const urlbase = getUrl(); // 获取API地址////n//n /** 读取本地图片地址 *///n let picData = createReadStream(message.file_image); // 创建可读流对象,读取本地图片地址////n//n /* 请求数据包 *///n let formdata = new FormData(); // 创建FormData对象//n formdata.append(///'msg_id///', message.msg_id); // 添加消息编号//n if (typeof message.content === ///'string///')//n formdata.append(///'content///', message.content); // 添加消息内容//n formdata.append(///'file_image///', picData); // 添加图片数据////n//n let url = ``;//n if (!isGroup) {//n url = `${urlbase}/dms/${id}/messages`; // 私信的URL//n } else {//n url = `${urlbase}/channels/${id}/messages`; // 群聊的URL//n }//n//n /* 采用请求方式发送数据 *///n return await axios({//n method: ///'post///',//n url,//n headers: {//n ///'Content-Type///': formdata.getHeaders()[///'content-type///'], // 设置请求头的Content-Type//n Authorization: `Bot ${cfg.appID}.${cfg.token}`, // 设置请求头的Authorization//n },//n data: formdata, // 请求数据包//n }).catch((err) => err);//n}//n//n/**//n * 发送buffer图片//n * @param id 私信传频道id,公信传子频道id//n * @param message {消息编号,图片,内容}//n * @param isGroup 是否是群聊//n * @returns//n *///n export async function postImage(//n id: string,//n message: {//n msg_id: string;//n file_image: string | Buffer | URL;//n content?: string;//n },//n isGroup: boolean//n): Promise<any> {//n // 得到环境//n const urlbase = getUrl(); // 获取API地址//n /* 创建可读流对象 *///n const picData = new Readable(); // 创建可读流对象//n picData.push(message.file_image); // 将图片数据推入流中//n picData.push(null); // 数据读取完毕时,推入null////n//n /* 构建请求数据包 *///n const formdata = new FormData(); // 创建FormData对象//n formdata.append(///'msg_id///', message.msg_id); // 添加消息编号//n if (typeof message.content === ///'string///')//n formdata.append(///'content///', message.content); // 添加消息内容//n formdata.append(///'file_image///', picData, {//n filename: ///'image.jpg///', // 为上传的图片指定文件名//n contentType: ///'image/jpeg///', // 指定上传的图片类型//n });////n//n let url: string = ///'///';//n if (!isGroup) {//n url = `${urlbase}/dms/${id}/messages`; // 私信的URL//n } else {//n url = `${urlbase}/channels/${id}/messages`; // 群聊的URL//n }//n//n /* 采用请求方式发送数据 *///n return await axios({//n method: ///'post///',//n url,//n headers: {//n ///'Content-Type///': `multipart/form-data; boundary=${formdata.getBoundary()}`, // 设置请求头的Content-Type//n Authorization: `Bot ${cfg.appID}.${cfg.token}`, // 设置请求头的Authorization//n },//n data: formdata, // 请求数据包//n }).catch((err) => err);//n}//n//n//n///

Node.js 发送图片到 SGroup QQ API - sendImage & postImage 函数详解

原文地址: https://www.cveoy.top/t/topic/pnGS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录