mirror of
https://github.com/xHyroM/bun-discord-bot.git
synced 2024-12-21 11:51:05 +01:00
feat: improve ping command
This commit is contained in:
parent
78a393130a
commit
109398beea
6 changed files with 135 additions and 3 deletions
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
22
globals.d.ts
vendored
22
globals.d.ts
vendored
|
@ -3,5 +3,27 @@ declare module "bun" {
|
|||
DISCORD_BOT_TOKEN: string;
|
||||
BUN_ONLY_CHANNEL_ID: string;
|
||||
MESSAGE_PREFIX: string;
|
||||
WOLFRAM_ALPHA: string;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "@wolfram-alpha/wolfram-alpha-api" {
|
||||
export default function WolframAlphaAPI(appId: string): WolframAPI;
|
||||
|
||||
interface WolframAPI {
|
||||
getFull(input: string): Promise<WolframResponse>;
|
||||
}
|
||||
|
||||
interface WolframResponse {
|
||||
pods: WolframPod[];
|
||||
}
|
||||
|
||||
interface WolframPod {
|
||||
id: string;
|
||||
subpods: WolframSubpod[];
|
||||
}
|
||||
|
||||
interface WolframSubpod {
|
||||
plaintext: string;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
"@lilybird/jsx": "0.2.0",
|
||||
"@lilybird/transformers": "^0.2.0",
|
||||
"@paperdave/logger": "^3.0.1",
|
||||
"@wolfram-alpha/wolfram-alpha-api": "^23.1004.144821-RELEASE",
|
||||
"algoliasearch": "^4.23.2",
|
||||
"bun-tracestrings": "github:oven-sh/bun.report",
|
||||
"gray-matter": "^4.0.3",
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { ApplicationCommand as JSXApplicationCommand } from "@lilybird/jsx";
|
||||
import { ApplicationCommand } from "@lilybird/handlers";
|
||||
import { wolframApiClient } from "../constants.ts";
|
||||
|
||||
export default {
|
||||
post: "GLOBAL",
|
||||
|
@ -9,8 +10,60 @@ export default {
|
|||
|
||||
const { ws, rest } = await interaction.client.ping();
|
||||
|
||||
const wsClosedForm = await possibleClosedForm(ws);
|
||||
const restClosedForm = await possibleClosedForm(rest);
|
||||
|
||||
await interaction.editReply({
|
||||
content: `🏓 WebSocket: \`${ws}ms\` | Rest: \`${rest}ms\``,
|
||||
content: [
|
||||
`🏓`,
|
||||
`WebSocket: \`${wsClosedForm} ms\``,
|
||||
`Rest: \`${restClosedForm} ms\``,
|
||||
`||(\`${ws} ms\`, \`${rest} ms\`)||`,
|
||||
].join("\n"),
|
||||
});
|
||||
},
|
||||
} satisfies ApplicationCommand;
|
||||
|
||||
async function possibleClosedForm(
|
||||
value: number | string
|
||||
): Promise<string | number> {
|
||||
try {
|
||||
const res = await wolframApiClient.getFull(value.toString());
|
||||
const pod = res?.pods?.find((p) => p.id === "PossibleClosedForm");
|
||||
if (!pod) {
|
||||
return value;
|
||||
}
|
||||
|
||||
pod.subpods.sort((a, b) => {
|
||||
if (
|
||||
a.plaintext.includes("log") ||
|
||||
a.plaintext.includes("e") ||
|
||||
a.plaintext.includes("π")
|
||||
) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (
|
||||
b.plaintext.includes("log") ||
|
||||
b.plaintext.includes("e") ||
|
||||
b.plaintext.includes("π")
|
||||
) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return Math.random() - 0.5;
|
||||
});
|
||||
|
||||
const randomSubpod = pod.subpods[0];
|
||||
|
||||
const text = randomSubpod.plaintext;
|
||||
|
||||
if (text.includes("=") && !text.includes("near") && !text.includes("≈")) {
|
||||
return text.split("=")[0].trim();
|
||||
}
|
||||
|
||||
return randomSubpod.plaintext.split("≈")[0].trim();
|
||||
} catch {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { spawnSync } from "bun";
|
||||
import WolframAlphaAPI from "@wolfram-alpha/wolfram-alpha-api";
|
||||
import { dependencies } from "../package.json";
|
||||
import { sliceIfStartsWith } from "./util.ts";
|
||||
import { spawnSync } from "bun";
|
||||
|
||||
export const COMMIT_HASH = spawnSync({
|
||||
cmd: ["git", "log", "--pretty=format:%h", "-n", "1"],
|
||||
|
@ -50,3 +51,5 @@ export const BUN_EMOJIS = [
|
|||
|
||||
export const MDN_API = "https://developer.mozilla.org";
|
||||
export const MDN_DISCORD_EMOJI = "mdn:1236028636826566758";
|
||||
|
||||
export const wolframApiClient = WolframAlphaAPI(process.env.WOLFRAM_ALPHA);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { MessageCommand } from "@lilybird/handlers";
|
||||
import { wolframApiClient } from "../constants.ts";
|
||||
|
||||
export default {
|
||||
name: "ping",
|
||||
|
@ -9,8 +10,60 @@ export default {
|
|||
|
||||
const { ws, rest } = await message.client.ping();
|
||||
|
||||
const wsClosedForm = await possibleClosedForm(ws);
|
||||
const restClosedForm = await possibleClosedForm(rest);
|
||||
|
||||
await newMessage.edit({
|
||||
content: `🏓 WebSocket: \`${ws}ms\` | Rest: \`${rest}ms\``,
|
||||
content: [
|
||||
`🏓`,
|
||||
`WebSocket: \`${wsClosedForm} ms\``,
|
||||
`Rest: \`${restClosedForm} ms\``,
|
||||
`||(\`${ws} ms\`, \`${rest} ms\`)||`,
|
||||
].join("\n"),
|
||||
});
|
||||
},
|
||||
} satisfies MessageCommand;
|
||||
|
||||
async function possibleClosedForm(
|
||||
value: number | string
|
||||
): Promise<string | number> {
|
||||
try {
|
||||
const res = await wolframApiClient.getFull(value.toString());
|
||||
const pod = res?.pods?.find((p) => p.id === "PossibleClosedForm");
|
||||
if (!pod) {
|
||||
return value;
|
||||
}
|
||||
|
||||
pod.subpods.sort((a, b) => {
|
||||
if (
|
||||
a.plaintext.includes("log") ||
|
||||
a.plaintext.includes("e") ||
|
||||
a.plaintext.includes("π")
|
||||
) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (
|
||||
b.plaintext.includes("log") ||
|
||||
b.plaintext.includes("e") ||
|
||||
b.plaintext.includes("π")
|
||||
) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return Math.random() - 0.5;
|
||||
});
|
||||
|
||||
const randomSubpod = pod.subpods[0];
|
||||
|
||||
const text = randomSubpod.plaintext;
|
||||
|
||||
if (text.includes("=") && !text.includes("near") && !text.includes("≈")) {
|
||||
return text.split("=")[0].trim();
|
||||
}
|
||||
|
||||
return randomSubpod.plaintext.split("≈")[0].trim();
|
||||
} catch {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue