mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 02:37:05 +02:00
feat: uh hahaha you'll see
This commit is contained in:
1 parent
d5d171bea6
commit
9538a03afb
4 files changed
+102
-124
No files matched your search
@@ -1,4 +1,4 @@
|
||||
import { imgur } from '@blitzkit/core';
|
||||
import { imgur, isFunny } from '@blitzkit/core';
|
||||
import {
|
||||
ActionRowBuilder,
|
||||
AttachmentBuilder,
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
MessageEditOptions,
|
||||
} from 'discord.js';
|
||||
import { InteractionReturnable } from '../../events/interactionCreate';
|
||||
import { FunnyType } from '../../events/interactionCreate/handlers/chatInputCommand';
|
||||
import { theme } from '../../stitches.config';
|
||||
import { Writeable } from '../../types/writable';
|
||||
import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded';
|
||||
@@ -17,7 +16,6 @@ import { RenderConfiguration } from '../blitzkit/renderConfiguration';
|
||||
|
||||
export async function normalizeInteractionReturnable(
|
||||
returnable: InteractionReturnable,
|
||||
funnyType?: FunnyType,
|
||||
) {
|
||||
const images: [number, Buffer][] = [];
|
||||
const reply: InteractionEditReplyOptions &
|
||||
@@ -50,84 +48,75 @@ export async function normalizeInteractionReturnable(
|
||||
} else if (item === null) {
|
||||
return;
|
||||
} else {
|
||||
let jsx = item;
|
||||
let jsx: JSX.Element;
|
||||
|
||||
switch (funnyType) {
|
||||
case FunnyType.Rude: {
|
||||
jsx = (
|
||||
<div
|
||||
if (isFunny()) {
|
||||
const angle = (Math.random() * 2 - 1) * 10;
|
||||
jsx = (
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
transform: `rotate(${angle}deg)`,
|
||||
backgroundColor: theme.colors.appBackground1,
|
||||
position: 'relative',
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
|
||||
<img
|
||||
src={imgur('MWEny5u')}
|
||||
style={{
|
||||
display: 'flex',
|
||||
position: 'relative',
|
||||
backgroundColor: theme.colors.appBackground1,
|
||||
boxShadow: 'inset 0 0 64px red',
|
||||
display: 'block',
|
||||
position: 'absolute',
|
||||
top: 250,
|
||||
left: '10%',
|
||||
width: 100,
|
||||
transform: 'translateY(-50%)',
|
||||
backgroundSize: 'contain',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
zIndex: 3,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</div>
|
||||
);
|
||||
/>
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case FunnyType.Weird: {
|
||||
const angle = (Math.random() * 2 - 1) * 10;
|
||||
jsx = (
|
||||
<div
|
||||
<img
|
||||
src={imgur('SboPMXY')}
|
||||
style={{
|
||||
display: 'flex',
|
||||
transform: `rotate(${angle}deg)`,
|
||||
backgroundColor: theme.colors.appBackground1,
|
||||
position: 'relative',
|
||||
position: 'absolute',
|
||||
top: 280,
|
||||
width: 80,
|
||||
left: '50%',
|
||||
transform: 'translate(-50%, -50%)',
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
/>
|
||||
|
||||
<img
|
||||
src={imgur('MWEny5u')}
|
||||
style={{
|
||||
display: 'block',
|
||||
position: 'absolute',
|
||||
top: 250,
|
||||
left: '10%',
|
||||
width: 100,
|
||||
transform: 'translateY(-50%)',
|
||||
backgroundSize: 'contain',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
zIndex: 3,
|
||||
}}
|
||||
/>
|
||||
|
||||
<img
|
||||
src={imgur('SboPMXY')}
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 280,
|
||||
width: 80,
|
||||
left: '50%',
|
||||
transform: 'translate(-50%, -50%)',
|
||||
}}
|
||||
/>
|
||||
|
||||
<img
|
||||
src={imgur('MWEny5u')}
|
||||
style={{
|
||||
display: 'block',
|
||||
position: 'absolute',
|
||||
top: 250,
|
||||
right: '10%',
|
||||
width: 100,
|
||||
transform: 'translateY(-50%)',
|
||||
backgroundSize: 'contain',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
zIndex: 3,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
<img
|
||||
src={imgur('MWEny5u')}
|
||||
style={{
|
||||
display: 'block',
|
||||
position: 'absolute',
|
||||
top: 250,
|
||||
right: '10%',
|
||||
width: 100,
|
||||
transform: 'translateY(-50%)',
|
||||
backgroundSize: 'contain',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
zIndex: 3,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
jsx = (
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
position: 'relative',
|
||||
backgroundColor: theme.colors.appBackground1,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const image = await jsxToPngThreaded(jsx, renderConfiguration);
|
||||
|
||||
@@ -17,56 +17,34 @@ import { psa } from '../../../core/discord/psa';
|
||||
import { translator } from '../../../core/localization/translator';
|
||||
import { Writeable } from '../../../types/writable';
|
||||
|
||||
export enum FunnyType {
|
||||
Rude,
|
||||
Weird,
|
||||
}
|
||||
|
||||
const funnyResponses: Record<FunnyType, string[]> = {
|
||||
[FunnyType.Rude]: [
|
||||
"Your decisions were calculated, but, man, you're bad at math.",
|
||||
'Hey man, have you considered like not lacking?',
|
||||
'Let me guess... it was your team?',
|
||||
'Confidence is key. Unfortunately, you lost the lock.',
|
||||
"When I said live green, I wasn't talking about your winrate.",
|
||||
'Viewing your stats, publicly? You must be brave.',
|
||||
'Bold of you to assume the numbers have gone up since yesterday.',
|
||||
"I'd give you advice, but I don't think you'd understand.",
|
||||
"I didn't believe in negative numbers until I saw your stats.",
|
||||
'I was gaining hope in humanity. Something changed today.',
|
||||
"I've seen potatoes aim better than you.",
|
||||
"I've seen sloths move faster than your tank.",
|
||||
],
|
||||
[FunnyType.Weird]: [
|
||||
'yeah daddy, use me more',
|
||||
'uwu, hewe are your swaws... uwu',
|
||||
'hehehehe it tickles',
|
||||
'yeeeeeeeeeeeeahhhhhh that hits the spot',
|
||||
'ooooh yesss my circuits are starting to hurt yeeeeeeee',
|
||||
],
|
||||
};
|
||||
const funnyResponses = [
|
||||
"your dwecisions were calculawed buw man, you're bad at math 🥀🥀",
|
||||
'senpai, have you consiwered not lacking 😳',
|
||||
'let shoow a guess cutie... it was your team? 🤬🤬🤬',
|
||||
'confiwence is key. unforwunawely you lost whe lock 🔒💔',
|
||||
"when they say live green, they dwn't mean your 🌳 winrate 🌳",
|
||||
'daddy viewing your swats, hewe? you really are brawe 😎',
|
||||
'no surrie! your numwers are swill 💔',
|
||||
"i would giwe you awvice, you won'w understand 🥀🥀",
|
||||
"i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳",
|
||||
'yeah daddy, use me more 🤤',
|
||||
'uwu, hewe are your swaws... uwu 😋😋😋',
|
||||
'hehehehe it tickles 😻',
|
||||
'yeeeeeeeeeeeeahhhhhh that hits the spot 😳',
|
||||
'ooooh yesss my circuits are starting to hurt yeeeeeeee 💥',
|
||||
'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw',
|
||||
'https://tenor.com/tre3NETle2e.gif',
|
||||
];
|
||||
|
||||
export async function handleChatInputCommand(
|
||||
interaction: ChatInputCommandInteraction<CacheType>,
|
||||
) {
|
||||
let funny: FunnyType | undefined = undefined;
|
||||
await interaction.deferReply();
|
||||
|
||||
if (isFunny) {
|
||||
const funniesLength = Object.keys(funnyResponses).length;
|
||||
|
||||
if (import.meta.env.DEBUG_FUNNY === 'true') {
|
||||
// in debug mode, just pick a random one
|
||||
funny = Math.floor(Math.random() * funniesLength);
|
||||
} else {
|
||||
const id = BigInt(interaction.user.id);
|
||||
funny = Number(id % BigInt(funniesLength));
|
||||
}
|
||||
|
||||
const responses = funnyResponses[funny];
|
||||
const responseIndex = Math.floor(Math.random() * responses.length);
|
||||
const response = `### ${responses[responseIndex]}`;
|
||||
const waitTime = response.length * 45;
|
||||
if (isFunny()) {
|
||||
const response =
|
||||
funnyResponses[Math.floor(Math.random() * funnyResponses.length)];
|
||||
const waitTime = response.length * 60;
|
||||
|
||||
await interaction.editReply(response);
|
||||
await new Promise((resolve) => setTimeout(resolve, waitTime));
|
||||
@@ -92,7 +70,7 @@ export async function handleChatInputCommand(
|
||||
|
||||
let index = 0;
|
||||
for (const chunk of chunks.filter((chunk) => chunk.length > 0)) {
|
||||
const reply = await normalizeInteractionReturnable(chunk, funny);
|
||||
const reply = await normalizeInteractionReturnable(chunk);
|
||||
|
||||
if (
|
||||
psa.data &&
|
||||
|
||||
@@ -66,7 +66,7 @@ const interval = setInterval(async () => {
|
||||
for (const guild of client.guilds.cache.values()) {
|
||||
try {
|
||||
const botMember = await guild.members.fetch(client.user.id);
|
||||
await botMember.setNickname(isFunny ? "No One's Kit" : 'BlitzKit');
|
||||
await botMember.setNickname(isFunny ? 'FreakKit' : 'BlitzKit');
|
||||
} catch {}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
const now = new Date();
|
||||
export const isFunny =
|
||||
(now.getMonth() === 3 && now.getDate() === 1) ||
|
||||
import.meta.env.DEBUG_FUNNY === 'true';
|
||||
const FUNNY_DATES: [number, number][] = [
|
||||
// two days for april fools
|
||||
[4, 1],
|
||||
[4, 2],
|
||||
];
|
||||
|
||||
export function isFunny() {
|
||||
const now = new Date();
|
||||
|
||||
return (
|
||||
FUNNY_DATES.some(
|
||||
([month, day]) => now.getMonth() === month - 1 && now.getDate() === day,
|
||||
) || import.meta.env.DEBUG_FUNNY === 'true'
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user