import { StreamType, VoiceConnection } from "@discordjs/voice"; import { Client, ClientEvents, ClientPresenceStatusData, Message, MessageOptions, User } from "discord.js"; import { EventEmitter } from "events"; import { Readable } from "node:stream"; type OutputRunFunkce = string | MessageOptions | void; export type RunFunkce = (message: Message, argumenty: string) => OutputRunFunkce | Promise; interface BaseKomandProps { als?: string[]; arg?: string; } type KomandRaw = { run: string | RunFunkce; cd?: number; hidden?: true; DMUnsafe?: true; } & BaseKomandProps; 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 = Record; export type Modul = { more_komandy?: SRecord; client?: Client; } & { [key in EventSOn]?: ListenerFunkce | SuperObject | SuperListenerFunkce; }; export interface Komand { run: RunFunkce | string; 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; } & BaseKomandProps; export interface JoinHovna { conn: VoiceConnection; prev: string | boolean; } export interface CUser extends User { presence?: ClientPresenceStatusData; } export interface CustomKomandy { cKomandy: SRecord; cAliasy: SRecord; emitter: EventEmitter; naucse: RunFunkce; zapomen: RunFunkce; kohoje: RunFunkce; naucsealias: RunFunkce; zapomenalias: RunFunkce; naSend: KomandNaExport[]; realKomandy: SRecord; realAliasy: SRecord; }