144 lines
3.8 KiB
Plaintext
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',
|
|
],
|
|
},
|
|
],
|
|
};
|