/// /// /// @ts-check 'use strict'; serein.registerPlugin('GIF生成', 'v1.0', 'Zaitonn', '需要安装`CommandHelper.js`前置'); serein.setListener('onPluginsLoaded', () => { // @ts-expect-error const CHregCommand = serein.import('CHregCommand'); if (!CHregCommand) throw new Error('你需要安装`CommandHelper.js`'); CHregCommand({ name: 'GIF生成', keywords: ['gif', 'GIF', 'Gif'], callback: handle, needAdmin: false, description: ['生成一点乱七八糟的GIF图(误', '用法:发送“gif <图片名> [QQ]” 或 “gif 帮助”'], author: 'Zaitonn', version: 'v1.0' }); }); const MENU = `GIF生成·帮助菜单 ◽ 帮助 显示此菜单 ◽ 图片生成 用法:“gif <图片名> [QQ]” 其中QQ参数支持使用@或直接填写,不填则默认为发送者QQ ◽ 图片名列表 结婚;吃;咬;需要Ta;高质量;拍;摸;顶;捣;吸;看;感动哭了;膜拜;咸鱼 `; const URLS = { 结婚: 'https://api.iculture.cc/api/face_propose/', 吃: 'https://api.iculture.cc/api/chi/', 咬: 'https://api.iculture.cc/api/face_bite/', 需要ta: 'https://api.iculture.cc/api/face_need/', 高质量: 'https://api.iculture.cc/api/face_gao/', 拍: 'https://api.iculture.cc/api/face_pat/', 摸: 'https://api.iculture.cc/api/face_petpet/', 顶: 'https://api.iculture.cc/api/face_play/', 捣: 'https://api.iculture.cc/api/face_pound/', 吸: 'https://api.iculture.cc/api/face_suck/', 看: 'https://api.iculture.cc/api/face_thsee/', 感动哭了: 'https://api.iculture.cc/api/face_touch/', 膜拜: 'https://api.iculture.cc/api/face_worship/', 咸鱼: 'https://api.iculture.cc/api/face_yu/' }; const IDREGEX = /\[CQ:at,qq=(\d+)\]/; const logger = new Logger('FunnyGif'); /** * 处理消息 */ function handle({ user_id, message, message_id }) { const args = message.split(' ').slice(1); if (args.length === 0) return getReplyText('参数错误.\n请使用“gif 帮助”获取更多信息', message_id); let targetId = ''; if (args.length >= 2) { const result = getId(args[1]); if (!result[0]) return getReplyText(result[1], message_id); targetId = result[1]; } else targetId = user_id.toString(); try { switch (args[0]) { case '帮助': return getReplyText(MENU, message_id); default: return getCQImage(args[0], targetId); } } catch (error) { logger.error(`生成图片${args[0]}时错误\n${error}`); return error.message; } } /** * 回复文本生成 * @returns 回复文本 */ function getReplyText(message, message_id) { return `[CQ:reply,id=${message_id}]${message}`; } /** * 获取ID */ function getId(arg) { if (/^\d+$/.test(arg)) return [true, arg]; if (IDREGEX.test(arg)) { const result = IDREGEX.exec(arg)?.[1]; if (!result) return [false, '艾特CQ语句解析异常']; return [true, result]; } return [false, 'ID错误']; } /** * 获取CQ图片 */ function getCQImage(type, id) { const url = URLS[type.toLocaleLowerCase()]; if (!url) return '指定的图片类型不存在'; return `[CQ:image,file=${url}?QQ=${id}]`; }