49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { Collection } from "@discordjs/collection"
|
|
import { GuildScheduledEvent, Role, TextChannel } from "discord.js"
|
|
|
|
export type Maybe<T> = T | undefined | null | void
|
|
export interface Player {
|
|
name: string
|
|
}
|
|
export type supported_languages = "german" | "english"
|
|
export interface localized_string {
|
|
[k: string]: {
|
|
[k in supported_languages]: string
|
|
}
|
|
}
|
|
export class CustomError extends Error {
|
|
private code: string
|
|
public constructor(message: string, errorCode: string) {
|
|
super(message)
|
|
this.code = errorCode
|
|
}
|
|
public getCode() { return this.code }
|
|
}
|
|
export const errorCodes = {
|
|
no_end_date: 'no_end_date',
|
|
no_string_present: 'no_string_present',
|
|
no_schedule: 'no_schedule',
|
|
schedule_not_supported: 'schedule_not_supported',
|
|
no_repetition_amount: 'no_repetition_amount',
|
|
invalid_repetition_string: 'invalid_repetition_string',
|
|
no_creator_id: "no_creator_id",
|
|
}
|
|
export interface ChangedRoles {
|
|
addedRoles: Collection<string, Role>
|
|
removedRoles: Collection<string, Role>
|
|
}
|
|
export interface JellyfinConfig {
|
|
jellyfinUrl: string,
|
|
jellyfinToken: string,
|
|
movieCollectionId: string,
|
|
collectionUser: string
|
|
}
|
|
export type PermissionLevel = "VIEWER" | "ADMIN" | "TEMPORARY"
|
|
export interface prepareVoteMessageInput {
|
|
movies: string[],
|
|
startDate: Date,
|
|
event: GuildScheduledEvent,
|
|
announcementChannel: TextChannel,
|
|
pinAfterSending: boolean,
|
|
}
|