mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 09:03:29 +01:00
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
/* eslint-disable react/no-unknown-property */
|
|
|
|
import { ImageResponse } from 'next/og';
|
|
|
|
export const size = {
|
|
width: 1_200,
|
|
height: 630,
|
|
};
|
|
|
|
export const contentType = 'image/png';
|
|
|
|
async function loadGoogleFont(font: string, text: string) {
|
|
const url = `https://fonts.googleapis.com/css2?family=${font}&text=${encodeURIComponent(text)}`;
|
|
const css = await (await fetch(url)).text();
|
|
// eslint-disable-next-line prefer-named-capture-group
|
|
const resource = /src: url\((.+)\) format\('(opentype|truetype)'\)/.exec(css);
|
|
|
|
if (resource) {
|
|
const response = await fetch(resource[1]!);
|
|
if (response.status === 200) {
|
|
return response.arrayBuffer();
|
|
}
|
|
}
|
|
|
|
throw new Error('failed to load font data');
|
|
}
|
|
|
|
export default async function Image() {
|
|
return new ImageResponse(
|
|
(
|
|
<div tw="flex bg-[#121214] h-full w-full">
|
|
<div tw="mx-auto flex items-center h-full">
|
|
<div tw="flex">
|
|
<div tw="flex">
|
|
<div tw="flex flex-col font-black text-8xl text-white leading-tight">
|
|
<div tw="flex flex-row">
|
|
The <span tw="bg-[#5865f2] rounded-md px-3 py-2 ml-4 bottom-2">most popular</span>
|
|
</div>
|
|
<span>way to build Discord</span>
|
|
<span>bots.</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
),
|
|
{
|
|
...size,
|
|
fonts: [
|
|
{
|
|
name: 'Geist',
|
|
data: await loadGoogleFont('Geist:wght@900', 'The most popular way to build Discord bots.'),
|
|
weight: 900,
|
|
style: 'normal',
|
|
},
|
|
],
|
|
},
|
|
);
|
|
}
|