ClientX/docs/config.js.sample
2025-05-06 11:00:56 +00:00

144 lines
3.8 KiB
Plaintext

import dotenv from 'dotenv';
dotenv.config();
/**
* Sample configuration for the ClientX Discord bot.
* Copy this file to config.js and replace placeholder values with your own.
*/
export default {
clients: [
{
// Unique identifier for this client
id: 'YOUR_CLIENT_ID',
enabled: true,
// Discord user ID of the bot owner
owner: 'YOUR_DISCORD_USER_ID',
// Discord application credentials
discord: {
appId: 'YOUR_DISCORD_APP_ID',
token: 'YOUR_DISCORD_BOT_TOKEN',
},
// Logging configuration
logging: {
console: {
enabled: true,
colorize: true,
level: 'info',
},
file: {
dateFormat: 'YYYY-MM-DD',
timestampFormat: 'YYYY-MM-DD HH:mm:ss',
combined: {
enabled: true,
level: 'silly',
location: 'logs',
maxSize: '12m',
maxFiles: '30d',
},
error: {
enabled: true,
level: 'error',
location: 'logs',
maxSize: '12m',
maxFiles: '365d',
},
},
},
// CondimentX module settings (optional)
condimentX: {
dryRun: false,
guildID: 'YOUR_GUILD_ID',
debugChannel: 'YOUR_DEBUG_CHANNEL_ID',
blacklistUsers: [],
blacklistRoles: [],
graylistRoles: [],
whitelistRoles: [],
indexRoleID: 'YOUR_INDEX_ROLE_ID',
viralRoleID: 'YOUR_VIRAL_ROLE_ID',
antiIndexRoleID: 'YOUR_ANTI_INDEX_ROLE_ID',
antiViralRoleID: 'YOUR_ANTI_VIRAL_ROLE_ID',
firstCycleInterval: 30000,
cycleInterval: 3600000,
cycleIntervalRange: 900000,
incidenceDenominator: 40,
cessationDenominator: 20,
probabilityLimit: 20,
antiViralEffectiveness: 90,
proximityWindow: 120000,
messageHistoryLimit: 50,
ephemeralDelay: 60000,
openAI: false,
openAITriggerOnlyDuringIncident: true,
openAIResponseDenominator: 1,
openAIInstructionsFile: './prompts/kevinarby.txt',
openAITriggers: ['kevin', 'arby', 'werebeef'],
openAIWebhookID: 'YOUR_OPENAI_WEBHOOK_ID',
openAIWebhookToken: 'YOUR_OPENAI_WEBHOOK_TOKEN',
openAIToken: 'YOUR_OPENAI_API_KEY',
},
// PocketBase connection settings (optional)
pocketbase: {
url: 'YOUR_POCKETBASE_URL',
username: 'YOUR_POCKETBASE_USERNAME',
password: 'YOUR_POCKETBASE_PASSWORD',
},
// AI Responses module settings (optional)
responses: {
apiKey: 'YOUR_OPENAI_API_KEY',
defaultModel: 'gpt-4o',
defaultMaxTokens: 1000,
defaultTemperature: 0.7,
systemPromptPath: './prompts/IO3.txt',
conversationExpiry: 30 * 60 * 1000,
minScore: 1.0,
enableMentions: true,
enableReplies: true,
tools: {
webSearch: false,
fileSearch: false,
imageGeneration: true,
},
imageGeneration: {
defaultModel: 'gpt-image-1',
defaultQuality: 'standard',
imageSavePath: './images',
},
},
// Scorekeeper settings (optional)
scorekeeper: {
baseOutput: 1000,
commendationValue: 1.0,
citationValue: 1.2,
cooldown: 0,
decay: 90,
schedule: '0 0 * * 0',
},
// Modules to load for this client
modules: [
'ansi',
'botUtils',
'pbUtils',
'gitUtils',
'condimentX',
'responses',
'responsesPrompt',
'responsesQuery',
'responsesRandomizer',
'messageQueue-example',
'scorekeeper',
'scorekeeper-example',
'scExecHangarStatus',
'tempvc',
],
},
],
};