Denim-Bot/src/utils/types.ts
Histmy b32fcb6be2 commands reordering
+ help server shows custom cmds
+ removed ordinace :rip:
2023-06-04 20:04:01 +02:00

122 lines
2.9 KiB
TypeScript

import { StreamType, VoiceConnection } from "@discordjs/voice";
import { Awaitable, BaseMessageOptions, Client, ClientEvents, ClientPresenceStatusData, CommandInteraction, Message, MessageCreateOptions, MessagePayload, User } from "discord.js";
import { EventEmitter } from "events";
import { Readable } from "node:stream";
export type RunFunkce = (message: Message, argumenty: string) => Awaitable<string | MessagePayload | MessageCreateOptions | void>;
export type InteractionRunFunkce = (interaction: CommandInteraction) => Awaitable<string | BaseMessageOptions | void>;
export type BaseKomandProps = {
als?: string[];
arg?: string;
};
export type KomandRaw = BaseKomandProps &
{
run: string | RunFunkce;
slashRun?: InteractionRunFunkce;
cd?: number;
hidden?: true;
DMUnsafe?: true;
};
export type ListenerFunkce = (...args: any[]) => void;
export type SuperListenerFunkce = (...args: any[]) => boolean;
interface SuperObject {
pos: number;
fun: SuperListenerFunkce;
}
type Eventy = keyof ClientEvents | "userPresenceUpdate";
export type EventSOn = `on_${Eventy}` | `super_on_${Eventy}`;
export type SRecord<T> = Record<string, T>;
export type Modul = {
more_komandy?: SRecord<RunFunkce | KomandRaw | string>;
client?: Client<boolean>;
} & { [key in `on_${Eventy}`]?: ListenerFunkce }
& { [key in `super_on_${Eventy}`]?: SuperObject | SuperListenerFunkce; };
export type Komand = {
run: string | RunFunkce;
slashRun?: InteractionRunFunkce;
cd?: number;
DMUnsafe?: true;
};
export interface Spinkackar {
spinkacek: boolean;
timeup: number | false;
}
export interface FakePresence {
status: "online" | "idle" | "dnd" | "offline";
clientStatus?: ClientPresenceStatusData;
}
export interface UserChange {
user: User;
ch?: "user" | "stat";
stat?: string;
}
export type StatusyINaFounu = "Online" | "OnlinePhone" | "Idle" | "IdlePhone" | "DND" | "DNDPhone" | "Offline";
export interface ZmenovejObjekt {
id: string;
nick?: string;
pfp?: string;
status?: string;
}
export interface MuzikaFace {
name: string | Readable;
volume: number;
type?: StreamType;
}
export type KomandNaExport = {
name: string;
custom?: true;
} & BaseKomandProps;
export interface JoinHovna {
conn: VoiceConnection;
prev: string | boolean;
}
export interface CUser extends User {
presence?: ClientPresenceStatusData;
}
export interface CustomKomandy {
cKomandy: SRecord<Komand>;
cAliasy: SRecord<string>;
emitter: EventEmitter;
naucse: RunFunkce;
zapomen: RunFunkce;
kohoje: RunFunkce;
naucsealias: RunFunkce;
zapomenalias: RunFunkce;
naSend: KomandNaExport[];
realKomandy: SRecord<Komand>;
realAliasy: SRecord<string>;
}
export interface HelpServer {
komandy: KomandNaExport[];
customKomandy: KomandNaExport[];
customAliasy: SRecord<string>;
}
export class CClient extends Client {
komandy!: SRecord<Komand>;
aliasy!: SRecord<string>;
slashCommandy!: SRecord<string>;
}