update src/events/messageCreate.ts to slience or mask errors going to the discord chat
This commit is contained in:
@@ -30,6 +30,18 @@ interface UserConfig {
|
||||
}
|
||||
}
|
||||
|
||||
// List of in-character error responses for unavoidable Discord replies
|
||||
const friendlyErrorResponses = [
|
||||
'Huh?',
|
||||
'Sorry, I wasn’t listening. Can you say that again?',
|
||||
'Um... what was that?',
|
||||
'Oops, my mind wandered! Could you repeat that?',
|
||||
'Hehe, I got distracted. Say it one more time?'
|
||||
]
|
||||
|
||||
// Function to get a random friendly error response
|
||||
const getFriendlyError = () => friendlyErrorResponses[Math.floor(Math.random() * friendlyErrorResponses.length)]
|
||||
|
||||
/**
|
||||
* Max Message length for free users is 2000 characters (bot or not).
|
||||
* Bot supports infinite lengths for normal messages.
|
||||
@@ -142,9 +154,9 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
if (config === undefined) {
|
||||
redis.set(`server:${message.guildId}:config`, JSON.stringify({ options: { 'toggle-chat': true } }))
|
||||
.catch(err => log(`Failed to set default server config in Redis: ${err}`));
|
||||
reject(new Error('Failed to locate or create Server Preferences\n\nPlease try chatting again...'))
|
||||
reject(new Error('Failed to locate or create Server Preferences'))
|
||||
} else if (!config.options['toggle-chat']) {
|
||||
reject(new Error('Admin(s) have disabled chat features.\n\nPlease contact your server\'s admin(s).'))
|
||||
reject(new Error('Admin(s) have disabled chat features'))
|
||||
} else {
|
||||
resolve(config)
|
||||
}
|
||||
@@ -154,10 +166,12 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
} catch (error) {
|
||||
++attempt
|
||||
if (attempt < maxRetries) {
|
||||
log(`Attempt ${attempt} failed for Server Preferences. Retrying in ${delay}ms...`)
|
||||
log(`Attempt ${attempt} failed for Server Preferences: ${error.message}. Retrying in ${delay}ms...`)
|
||||
await new Promise(ret => setTimeout(ret, delay))
|
||||
} else {
|
||||
throw new Error(`Could not retrieve Server Preferences, please try chatting again...`)
|
||||
log(`Could not retrieve Server Preferences after ${maxRetries} attempts: ${error.message}`)
|
||||
message.reply(getFriendlyError())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,7 +206,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
redis.set(userConfigKey, JSON.stringify(defaultConfig))
|
||||
.catch(err => log(`Failed to set default user config in Redis: ${err}`));
|
||||
log(`Created default config for ${message.author.username}`)
|
||||
reject(new Error('No User Preferences is set up.\n\nCreating preferences with defaults.\nPlease try chatting again.'))
|
||||
reject(new Error('No User Preferences set up. Created defaults.'))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -207,7 +221,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
shouldStream = config.options['message-stream'] || false
|
||||
|
||||
if (typeof config.options['switch-model'] !== 'string') {
|
||||
reject(new Error(`No Model was set. Please set a model by running \`/switch-model <model of choice>\`.\n\nIf you do not have any models. Run \`/pull-model <model name>\`.`))
|
||||
reject(new Error('No Model set. User must run `/switch-model` or `/pull-model`.'))
|
||||
}
|
||||
|
||||
resolve(config)
|
||||
@@ -220,10 +234,12 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
} catch (error) {
|
||||
++attempt
|
||||
if (attempt < maxRetries) {
|
||||
log(`Attempt ${attempt} failed for User Preferences. Retrying in ${delay}ms...`)
|
||||
log(`Attempt ${attempt} failed for User Preferences: ${error.message}. Retrying in ${delay}ms...`)
|
||||
await new Promise(ret => setTimeout(ret, delay))
|
||||
} else {
|
||||
throw new Error(`Could not retrieve User Preferences, please try chatting again...`)
|
||||
log(`Could not retrieve User Preferences after ${maxRetries} attempts: ${error.message}`)
|
||||
message.reply(getFriendlyError())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,7 +267,9 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
}
|
||||
|
||||
if (!userConfig) {
|
||||
throw new Error(`Failed to initialize User Preference for **${message.author.username}**.\n\nIt's likely you do not have a model set. Please use the \`switch-model\` command to do that.`)
|
||||
log(`Failed to initialize User Preference for ${message.author.username}: No config available`)
|
||||
message.reply(getFriendlyError())
|
||||
return
|
||||
}
|
||||
|
||||
// Get message attachment if exists
|
||||
@@ -377,7 +395,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
})
|
||||
} catch (error) {
|
||||
log(`Ollama chat error: ${error}`)
|
||||
message.reply('Sorry, I’m having trouble contacting the AI model. Try again later?')
|
||||
message.reply(getFriendlyError())
|
||||
msgHist.pop()
|
||||
return
|
||||
}
|
||||
@@ -396,13 +414,14 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
}
|
||||
} catch (error) {
|
||||
log(`Failed to parse model response: ${error}`)
|
||||
message.reply('Sorry, I’m having trouble thinking right now. Try again?')
|
||||
message.reply(getFriendlyError())
|
||||
msgHist.pop()
|
||||
return
|
||||
}
|
||||
|
||||
if (jsonResponse.status === 'error') {
|
||||
message.reply(jsonResponse.reply)
|
||||
log(`Model returned error status: ${jsonResponse.reply}`)
|
||||
message.reply(getFriendlyError())
|
||||
msgHist.pop()
|
||||
return
|
||||
}
|
||||
@@ -439,7 +458,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
}
|
||||
|
||||
// Send reply to Discord and mark as bot response
|
||||
const reply = jsonResponse.reply || 'Sorry, I didn’t get that. Can you try again?'
|
||||
const reply = jsonResponse.reply || 'Huh?'
|
||||
let replyMessage;
|
||||
try {
|
||||
replyMessage = await message.reply(reply)
|
||||
@@ -487,7 +506,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, ollama, client
|
||||
}
|
||||
} catch (error: any) {
|
||||
log(`Error in message processing: ${error.message}`)
|
||||
message.reply(`**Error Occurred:**\n\n**Reason:** *${error.message}*`)
|
||||
message.reply(getFriendlyError())
|
||||
msgHist.pop()
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user