{ "version": 3, "sources": ["../../../server/chat-plugins/quotes.ts"], "sourcesContent": ["import { FS, Utils } from '../../lib';\n\nconst STORAGE_PATH = 'config/chat-plugins/quotes.json';\nconst MAX_QUOTES = 300;\n\ninterface Quote {\n\tuserid: string;\n\tquote: string;\n\tdate: number;\n}\n\nconst quotes: { [room: string]: Quote[] } = JSON.parse(FS(STORAGE_PATH).readIfExistsSync() || \"{}\");\n\n// migrate quotes out of roomsettings\nfunction convertOldQuotes() {\n\tfor (const room of Rooms.rooms.values()) {\n\t\tif ((room.settings as any).quotes) {\n\t\t\tquotes[room.roomid] = (room.settings as any).quotes;\n\t\t\tdelete (room.settings as any).quotes;\n\t\t\troom.saveSettings();\n\t\t\tsaveQuotes();\n\t\t}\n\t}\n}\n\nfunction saveQuotes() {\n\tFS(STORAGE_PATH).writeUpdate(() => JSON.stringify(quotes));\n}\n\nconvertOldQuotes();\n\nexport const commands: Chat.ChatCommands = {\n\trandquote(target, room, user) {\n\t\troom = this.requireRoom();\n\t\tconst roomQuotes = quotes[room.roomid];\n\t\tif (!roomQuotes?.length) return this.errorReply(`This room has no quotes.`);\n\t\tthis.runBroadcast(true);\n\t\tconst { quote, date, userid } = roomQuotes[Math.floor(Math.random() * roomQuotes.length)];\n\t\tconst time = Chat.toTimestamp(new Date(date), { human: true });\n\t\tconst attribution = toID(target) === 'showauthor' ? `