diff --git a/package.json b/package.json index af8ab26..9314e7e 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "markdown-it": "^13.0.1", "markdown-it-highlightjs": "^4.0.1", "markdown-it-kbd": "^2.2.2", - "midjourney-fetch": "0.1.2", + "midjourney-fetch": "0.1.3", "react": "^18.0.0", "react-dom": "^18.0.0", "replicate-fetch": "^0.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73aa843..2aec7dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,7 +35,7 @@ specifiers: markdown-it: ^13.0.1 markdown-it-highlightjs: ^4.0.1 markdown-it-kbd: ^2.2.2 - midjourney-fetch: 0.1.2 + midjourney-fetch: 0.1.3 prettier: ^2.8.4 prettier-plugin-astro: ^0.8.0 punycode: ^2.3.0 @@ -64,7 +64,7 @@ dependencies: markdown-it: 13.0.1 markdown-it-highlightjs: 4.0.1 markdown-it-kbd: 2.2.2 - midjourney-fetch: 0.1.2 + midjourney-fetch: 0.1.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 replicate-fetch: 0.1.1 @@ -4049,8 +4049,8 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /midjourney-fetch/0.1.2: - resolution: {integrity: sha512-iORjqkMckpdS79YCNVSQc0Z89fBGgYFU3CCFUNrYaKQea3304A6iCO4KnPQsY7a6XgGNbKHi0m+L2ROJqVVyRA==} + /midjourney-fetch/0.1.3: + resolution: {integrity: sha512-2MqBCGZH7ay4I1b+7RQkhRIxWs+YyN5umP/WJy84MzJtTc+Vf18uENYYK7KK4/fx1G3tCvYA1yncJ9jCjzv6JA==} engines: {node: '>=18', pnpm: '>=8'} dev: false diff --git a/src/modules/Content/index.tsx b/src/modules/Content/index.tsx index bda4c88..be40f6a 100644 --- a/src/modules/Content/index.tsx +++ b/src/modules/Content/index.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ import { FC, useContext, useEffect, useState } from 'react'; import MessageBox from '@components/MessageBox'; import { Message, ReactSetState } from '@interfaces'; @@ -240,16 +241,19 @@ const Content: FC = ({ setActiveSetting }) => { await new Promise((resp) => setTimeout(resp, midjourneyConfigs.interval) ); - const message: MessageItem = await ( + const message: MessageItem & { msg?: string } = await ( await fetch( `/api/images?model=Midjourney&prompt=${content}&serverId=${configs.discordServerId}&channelId=${configs.discordChannelId}&token=${configs.discordToken}` ) ).json(); - if (message && !isInProgress(message)) { + console.log(count, JSON.stringify(message)); + // msg means error message + if (message && !message.msg && !isInProgress(message)) { [image] = message.attachments; break; } - } catch { + } catch (e) { + console.log(count, e.message || e.stack || e); continue; } } diff --git a/src/pages/api/images.ts b/src/pages/api/images.ts index 5363933..7562cfb 100644 --- a/src/pages/api/images.ts +++ b/src/pages/api/images.ts @@ -3,7 +3,7 @@ import type { APIRoute } from 'astro'; import { loadBalancer } from '@utils/server'; import { createOpenjourney } from 'replicate-fetch'; import { SupportedImageModels } from '@configs'; -import { Midjourney, findMessageByPrompt } from 'midjourney-fetch'; +import { Midjourney } from 'midjourney-fetch'; import { apiKeyStrategy, apiKeys, @@ -22,9 +22,9 @@ export const get: APIRoute = async ({ request }) => { const params = new URL(url).searchParams; const model = params.get('model') as SupportedImageModels; - const serverId = params.get('serverId') ?? dicordServerId; - const channelId = params.get('channelId') ?? discordChannelId; - const token = params.get('token') ?? discordToken; + const serverId = params.get('serverId') || dicordServerId; + const channelId = params.get('channelId') || discordChannelId; + const token = params.get('token') || discordToken; const prompt = params.get('prompt'); if (model === 'Midjourney') { @@ -53,19 +53,28 @@ export const get: APIRoute = async ({ request }) => { const midjourney = new Midjourney({ serverId, channelId, - discordToken: token, + token, }); midjourney.debugger = true; + try { + const message = await midjourney.getMessage(prompt); - const messgaes = await midjourney.getMessages(); - - const message = findMessageByPrompt(messgaes, prompt); - if (message) { - return new Response(JSON.stringify(message), { status: 200 }); + if (message) { + return new Response(JSON.stringify(message), { status: 200 }); + } + return new Response(JSON.stringify({ msg: 'No content found' }), { + status: 200, + }); + } catch (e) { + return new Response(JSON.stringify({ msg: e.message || e.stack || e }), { + status: 500, + }); } } - return new Response(JSON.stringify({ data: {} }), { status: 200 }); + return new Response('{}', { + status: 200, + }); }; export const post: APIRoute = async ({ request }) => { @@ -141,7 +150,7 @@ export const post: APIRoute = async ({ request }) => { const midjourney = new Midjourney({ serverId, channelId, - discordToken: token, + token, }); midjourney.debugger = true;