MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / ImageFeature

Class ImageFeature

ai/ai.ts:4694–4805  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4692
4693class ImageFeature extends BaseFeatureHandler {
4694 readonly name = "图片生成";
4695 readonly command = "image";
4696 readonly description = "生成图片";
4697
4698 private aiService: AIService;
4699 private messageUtils: MessageUtils;
4700 private httpClient: HttpClient;
4701
4702 constructor(
4703 aiService: AIService,
4704 configManagerPromise: Promise<ConfigManager>,
4705 httpClient: HttpClient,
4706 ) {
4707 super(configManagerPromise);
4708 this.aiService = aiService;
4709 this.messageUtils = new MessageUtils(configManagerPromise, httpClient);
4710 this.httpClient = httpClient;
4711 }
4712
4713 async execute(
4714 msg: Api.Message,
4715 args: string[],
4716 _prefixes: string[],
4717 ): Promise<void> {
4718 const prefixes = getPrefixes();
4719 const configManager = await this.getConfigManager();
4720 const config = configManager.getConfig();
4721 const replyMsg = await safeGetReplyMessage(msg);
4722 const replyToId = replyMsg?.id;
4723
4724 const subCommand = args[1]?.toLowerCase();
4725 if (subCommand === "preview") {
4726 const state = args[2]?.toLowerCase();
4727 if (!state) {
4728 await this.editMessage(
4729 msg,
4730 `🖼️ <b>图片预览状态:</b>\n\n📄 当前状态: ${config.imagePreview ? "开启" : "关闭"}`,
4731 );
4732 return;
4733 }
4734 requireUser(state === "on" || state === "off", "参数必须是 on 或 off");
4735 await configManager.updateConfig((cfg) => {
4736 cfg.imagePreview = state === "on";
4737 });
4738 await this.editMessage(
4739 msg,
4740 `✅ 图片预览已${state === "on" ? "开启" : "关闭"}`,
4741 );
4742 return;
4743 }
4744
4745 const promptInput = args.slice(1).join(" ").trim();
4746 const replyText = getMessageText(replyMsg).trim();
4747 const replyImageParts = await getMessageImageParts(replyMsg);
4748 const messageImageParts = await getMessageImageParts(msg);
4749 const imageParts = [...replyImageParts, ...messageImageParts];
4750
4751 const hasPrompt = !!promptInput || !!replyText;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected