mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 19:28:17 +00:00
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import { encode } from "../../deps.ts";
|
|
import {
|
|
ActivityType,
|
|
ImageFormats,
|
|
ImageSize,
|
|
StatusType,
|
|
} from "../types/types.ts";
|
|
import { sendGatewayCommand } from "../ws/shard_manager.ts";
|
|
|
|
export const sleep = (timeout: number) => {
|
|
return new Promise((resolve) => setTimeout(resolve, timeout));
|
|
};
|
|
|
|
export interface BotStatusRequest {
|
|
status: StatusType;
|
|
game: {
|
|
name?: string;
|
|
type: ActivityType;
|
|
};
|
|
}
|
|
|
|
export function editBotsStatus(
|
|
status: StatusType,
|
|
name?: string,
|
|
type = ActivityType.Game,
|
|
) {
|
|
sendGatewayCommand("EDIT_BOTS_STATUS", { status, game: { name, type } });
|
|
}
|
|
|
|
export function chooseRandom<T>(array: T[]) {
|
|
return array[Math.floor(Math.random() * array.length)];
|
|
}
|
|
|
|
export async function urlToBase64(url: string) {
|
|
const buffer = await fetch(url).then((res) => res.arrayBuffer());
|
|
const imageStr = encode(buffer);
|
|
const type = url.substring(url.lastIndexOf(".") + 1);
|
|
return `data:image/${type};base64,${imageStr}`;
|
|
}
|
|
|
|
/** Allows easy way to add a prop to a base object when needing to use complicated getters solution. */
|
|
export function createNewProp(value: any): Partial<PropertyDescriptor> {
|
|
return { configurable: true, enumerable: true, writable: true, value };
|
|
}
|
|
|
|
export function delay(ms: number): Promise<void> {
|
|
return new Promise((res): number =>
|
|
setTimeout((): void => {
|
|
res();
|
|
}, ms)
|
|
);
|
|
}
|
|
|
|
export const formatImageURL = (
|
|
url: string,
|
|
size: ImageSize = 128,
|
|
format?: ImageFormats,
|
|
) => {
|
|
return `${url}.${format ||
|
|
(url.includes("/a_") ? "gif" : "jpg")}?size=${size}`;
|
|
};
|