SYMBOL INDEX (37 symbols across 6 files) FILE: src/bot.ts type MessageType (line 8) | enum MessageType { constant SINGLE_MESSAGE_MAX_SIZE (line 27) | const SINGLE_MESSAGE_MAX_SIZE = 500; type Speaker (line 28) | type Speaker = RoomImpl | ContactImpl; type ICommand (line 29) | interface ICommand{ class ChatGPTBot (line 34) | class ChatGPTBot { method setBotName (line 40) | setBotName(botName: string) { method chatGroupTriggerRegEx (line 43) | get chatGroupTriggerRegEx(): RegExp { method chatPrivateTriggerRule (line 46) | get chatPrivateTriggerRule(): RegExp | undefined { method command (line 104) | async command(contact: any, rawText: string): Promise { method cleanMessage (line 114) | cleanMessage(rawText: string, privateChat: boolean = false): string { method getGPTMessage (line 132) | async getGPTMessage(talkerName: string,text: string): Promise { method checkChatGPTBlockWords (line 141) | checkChatGPTBlockWords(message: string): boolean { method trySay (line 148) | async trySay( method triggerGPTMessage (line 168) | triggerGPTMessage(text: string, privateChat: boolean = false): boolean { method checkBlockWords (line 187) | checkBlockWords(message: string): boolean { method isNonsense (line 194) | isNonsense( method onPrivateMessage (line 217) | async onPrivateMessage(talker: ContactInterface, text: string) { method onGroupMessage (line 222) | async onGroupMessage( method onMessage (line 231) | async onMessage(message: Message) { FILE: src/data.ts class DB (line 9) | class DB { method addUser (line 16) | public addUser(username: string): User { method getUserByUsername (line 39) | public getUserByUsername(username: string): User { method getChatMessage (line 47) | public getChatMessage(username: string): Array { function dalle (line 51) | async function dalle(username:string,prompt: string) { function whisper (line 71) | async function whisper(username:string,videoPath: string): Promise