Skip to content

Settings Examples

DRN edited this page Sep 4, 2023 · 17 revisions

EXAMPLE: ALL WITH DEFAULT VALUES

FOR JSON DO NOT LEAVE COMMAS , AFTER THE LAST ITEM IN A SECTION, IT WILL ERROR.

FOR HELP WITH JSON FORMATTING, SEE BELOW EXAMPLES.

{
    "credentials": {
        "token": "YOUR_USER_OR_BOT_TOKEN",        // user with 2FA or genuine Discord bot.
        "email": "YOUR_USER_EMAIL_NO_2FA",        // user without 2FA.
        "password": "YOUR_USER_PASSWORD_NO_2FA",  // user without 2FA.
        "twitterEnabled": true,         // Toggle Twitter / X authentication, enabled by default.
        "twitterUsername": "",          // Twitter / X Account, required to fetch tweet media.
        "twitterPassword": "",          // Twitter / X Account, required to fetch tweet media.
        "twitterProxy": "",                 // OPTIONAL - Connect to Twitter / X via Proxy; Supports HTTP(s) and SOCKS5.
        "instagramEnabled": true,       // Toggle Instagram authentication, enabled by default.
        "instagramUsername": "",        // Instagram Account, captcha required at some point(s).
        "instagramPassword": "",        // Instagram Account, captcha required at some point(s).
        "instagramProxy": "",               // OPTIONAL - Connect to Instagram via Proxy; Supports HTTP(s) and SOCKS5.
        "instagramProxyInsecure": false,    // OPTIONAL - Define if proxy is insecure connection.
        "instagramProxyForceHTTP2": false,  // OPTIONAL - Define if proxy client should force HTTP2.
        "flickrApiKey": ""
    },

    "admins": [
        "YOUR_DISCORD_USER_ID",
        "YOUR_FRIENDS_DISCORD_USER_ID",
        "YOUR_OTHER_FRIENDS_DISCORD_USER_ID"
    ],
    "adminChannels": [
        {
            "channel": "DISCORD_CHANNEL_ID_FOR_COMMANDS",
            "logProgram": false,      // output most program logging to channel (this is typically a lot)
            "logStatus": true,        // output program status updates to channel
            "logErrors": true,        // output download errors to channel
            "unlockCommands": false   // allow non-admins to use commands in this channel
        }
    ],

    "overwriteCachePath": "",               // "cache" by default
    "overwriteHistoryPath": "",             // "cache/history" by default
    "overwriteDuploPath": "",               // "cache/.duplo" by default
    "overwriteTwitterPath": "",             // "cache/twitter.json" by default
    "overwriteInstagramPath": "",           // "cache/instagram.json" by default
    "overwriteConstantsPath": "",           // "cache/constants.json" by default
    "overwriteDatabasePath": "",            // "database" by default
    "overwriteDatabaseBackupsPath": "",     // "backups" by default

    "logOutput": "",    // optional filepath to log console output to, include extension.
    "logIndent": true,  // indentation between log timestamp/prefix and log content.

    "processLimit": 32, // # of concurrent tasks allowed at once.

    "debug": false,                 // detailed program info.
    "backupDatabaseOnStart": false, // backup database folder to dated zip file in local "backups" folder.
    "watchSettings": true,          // update settings live if file is modified.
    "settingsOutput": true,         // display parsed settings on load.
    "messageOutput": true,          // display messages being processed in real time.
    "messageOutputHistory": false,  // display messages being processed while running history.

    "discordLogLevel": 0,         // discord API log leveling setting.
    "discordTimeout": 180,        // seconds to wait before giving up on a stale Discord connection.
    "downloadTimeout": 60,        // seconds to wait before giving up on a download.
    "downloadRetryMax": 3,        // times to retry a failed download.
    "exitOnBadConnection": false, // kill the program when encountering a faulty Discord connection rather than retrying.
    "githubUpdateChecking": true, // check for program updates on launch.

    "commandPrefix": "ddg ",      // prefix for discord commands.
    "commandTagging": true,       // tag when responding to commands (including history).
    "scanOwnMessages": false,     // checks messages of authenticated user, should be false if genuine bot, true if selfbot.
    "allowGeneralCommands": true, // ping/help/info/etc.
    "inflateDownloadCount": 0,    // +/- displayed download tally.
    "europeanNumbers": false,     // 1.000.000,00 (disgusting) versus 1,000,000.00 (normal).

    "historyManagerRate": 5,  // seconds between reprocessing history queue.
    "checkupRate": 30,        // minutes to print checkup line in program.
    "connectionCheckRate": 5, // minutes to check Discord connection for failure.
    "presenceRefreshRate": 3, // minutes to refresh Discord presence, sometimes it randomly goes blank.

    "save": true,
    "allowCommands": true,  
    "scanEdits": true,
    "ignoreBots": true,

    "sendErrorMessages": false,   // Send error replies in Discord.
    "sendFileToChannel": "",      // Forward detected media to channel.
    "sendFileToChannels": [ "" ], // ^.
    "sendFileDirectly": true,     // Send direct file as attachment or embed in message.
    "sendFileCaption": "",        // Caption to accompany media.

    "filenameDateFormat": "2006-01-02_15-04-05",  // Format for {{date}}.
    "filenameFormat": "{{date}} {{file}}", // Default would be "2020-01-02_03-04-05 original_filename.png"

    "presenceEnabled": true,    // Display Discord presence
    "presenceStatus": "idle", // "online" or "idle" or "dnd" or "invisible".
    "presenceType": 0,        // 0 = Playing, 1 = Streaming, 2 = Listening, 3 = Watching.
    "presenceLabel": "{{timeSavedShort}} - {{countShort}} files",
    "presenceDetails": "{{timeSavedLong}}",       // user accounts only - "3:04:05pm MST - January 2, 2006" by default.
    "presenceDetails": "{{count}} files total",   // user accounts only.

    "reactWhenDownloaded": false,           // react to messages downloaded from.
    "reactWhenDownloadedEmoji": "",         // specify emoji for reactions, random otherwise.
    "reactWhenDownloadedHistory": false,    // react to messages downloaded from in history jobs.
    "overwriteDefaultReaction": "",         // "✅" by default.
    "historyTyping": true,                  // show user as typing when processing history.
    "embedColor": "",                       // override embed color, role color by default.

    "historyMaxJobs": 3,            // # of history jobs allowed to run concurrently, constrained by processLimit above.
    "autoHistory": false,           // automatically run history on launch.
    "autoHistoryBefore": "",        // YYYY-MM-DD for date filtering.
    "autoHistorySince": "",         // YYYY-MM-DD for date filtering.
    "sendAutoHistoryStatus": false, // send status message for auto history jobs.
    "sendHistoryStatus": true,      // send status message for history jobs.
    "historyRequestCount": 100,     // amount of messages to request per batch when processing history. 100 default, 100 max.
    "historyRequestDelay": 0,       // delay by seconds for history batch requests (each message batch)

    "delayHandling": 0,         // delay link handling by milliseconds for live messages
    "delayHandlingHistory": 0,  // delay link handling by milliseconds for history messages
    "divideByYear": false,
    "divideByMonth": false,
    "divideByDay": false,
    "divideByHour": false,
    "divideByServer": false,
    "divideByChannel": false,
    "divideByUser": false,
    "divideByType": true, // images/videos/audio/text/other.
    "divideFoldersUseID": false, // use Discord IDs rather than user/server/channel names.
    "saveImages": true,
    "saveVideos": true,
    "saveAudioFiles": true,
    "saveTextFiles": false,
    "saveOtherFiles": false,
    "savePossibleDuplicates": false, // save if exact filename already exists.

    "filters": {
      // when "allowed" options are enabled, nothing is allowed unless it meets their criteria.
        "blockedPhrases": [ "" ],
        "allowedPhrases": [ "" ],

        "blockedUsers": [ "" ], // by Discord ID.
        "allowedUsers": [ "" ], // by Discord ID.

        "blockedRoles": [ "" ], // by Discord ID.
        "allowedRoles": [ "" ], // by Discord ID.

        "blockedDomains": [ "" ],
        "allowedDomains": [ "" ],

        "blockedExtensions": [ ".htm", ".html", ".php", ".exe", ".dll", ".bin", ".cmd", ".sh", ".py", ".jar" ],
        "allowedExtensions": [ "" ],

        "blockedFilenames": [ "" ], // List of phrases to check for in original filename, pre-formatting.
        "allowedFilenames": [ "" ],

        "blockedReactions": [ "" ], // List of reactions to block or allow, by ID only.
        "allowedReactions": [ "" ]
    },

    // duplicate image filtering
    // caching of image data is stored via a database file; it will not read all pre-existing images.
    "duplo": false,
    // threshold for what the bot considers too similar of an image comparison score.
    // * lower = more similar (lowest is around -109.7).
    // * higher = less similar (does not really have a maximum, would require your own testing).
    // if score is lower than your threshold, the image will be skipped.
    "duploThreshold": 0,

    "all": {
        "destination": "FOLLOW_CHANNELS_BELOW_FOR_REST"
    },
    "allBlacklistUsers": [ "" ],
    "allBlacklistServers": [ "" ],
    "allBlacklistCategories": [ "" ],
    "allBlacklistChannels": [ "" ],

    "users": [
        {
            "user": "SOURCE_DISCORD_USER_ID",
            "users": [ "SOURCE_DISCORD_USER_ID" ],
            "destination": "FOLLOW_CHANNELS_BELOW_FOR_REST"
        }
    ],

    "servers": [
        {
            "server": "SOURCE_DISCORD_SERVER_ID",
            "servers": [ "SOURCE_DISCORD_SERVER_ID" ],
            "serverBlacklist": [ "DISCORD_CHANNELS_TO_BLOCK" ],
            "destination": "FOLLOW_CHANNELS_BELOW_FOR_REST"
        }
    ],

    "categories": [
        {
            "category": "SOURCE_DISCORD_CATEGORY_ID",
            "categories": [ "SOURCE_DISCORD_CATEGORY_ID" ],
            "categoryBlacklist": [ "DISCORD_CHANNELS_TO_BLOCK" ],
            "destination": "FOLLOW_CHANNELS_BELOW_FOR_REST"
        }
    ],

    "channels": [
        {
            "channel": "SOURCE_DISCORD_CHANNEL_ID",
            "channels": [ "SOURCE_DISCORD_CHANNEL_ID" ],
            "destination": "files/example-folder",

            "enabled": true,
            "save": true,
            "allowCommands": true,
            "scanEdits": true,
            "ignoreBots": true,

            "sendErrorMessages": false,
            "sendFileToChannel": "",
            "sendFileToChannels": [ "" ],
            "sendFileDirectly": true,
            "sendFileCaption": "",

            "filenameDateFormat": "2006-01-02_15-04-05",
            "filenameFormat": "{{date}} {{file}}",

            "presenceEnabled": true,
            "reactWhenDownloaded": false,
            "reactWhenDownloadedEmoji": "",
            "reactWhenDownloadedHistory": false,
            "blacklistReactEmojis": [ "" ],
            "historyTyping": true,
            "embedColor": "",

            "autoHistory": false,
            "autoHistoryBefore": "",
            "autoHistorySince": "",
            "sendAutoHistoryStatus": false,
            "sendHistoryStatus": true,

            "delayHandling": 0,
            "delayHandlingHistory": 0,
            "divideByYear": false,
            "divideByMonth": false,
            "divideByDay": false,
            "divideByHour": false,
            "divideByServer": false,
            "divideByChannel": false,
            "divideByUser": false,
            "divideByType": true,
            "divideFoldersUseID": false,
            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": false,
            "savePossibleDuplicates": false,

            "filters": {
                "blockedPhrases": [ "" ],
                "allowedPhrases": [ "" ],

                "blockedUsers": [ "" ],
                "allowedUsers": [ "" ],

                "blockedRoles": [ "" ],
                "allowedRoles": [ "" ],

                "blockedExtensions": [ ".htm", ".html", ".php", ".exe", ".dll", ".bin", ".cmd", ".sh", ".py", ".jar" ],
                "allowedExtensions": [ "" ],

                "blockedDomains": [ "" ],
                "allowedDomains": [ "" ]
            },

            "duplo": false,
            "duploThreshold": 0,

            "logLinks": {
                "destination": "",
                "destinationIsFolder": false,

                "divideLogsByServer": true,
                "divideLogsByChannel": true,
                "divideLogsByUser": false,
                "divideLogsByStatus": false,
                
                "logDownloads": true,
                "logFailures": true,

                "filterDuplicates": false,
                "prefix": "",
                "suffix": "",
                "userData": false
            },

            "logMessages": {
                "destination": "",
                "destinationIsFolder": false,

                "divideLogsByServer": true,
                "divideLogsByChannel": true,
                "divideLogsByUser": false,

                "filterDuplicates": false,
                "prefix": "",
                "suffix": "",
                "userData": false
            }

        }

    ]
}

EXAMPLE: BARE MINIMUM

{
    "credentials": {
        "token": "YOUR_USER_OR_BOT_TOKEN",
        "email": "YOUR_USER_EMAIL_NO_2FA",
        "password": "YOUR_USER_PASSWORD_NO_2FA"
    },

    "admins": [ "YOUR_DISCORD_USER_ID" ],
    "adminChannels": [{ "channel": "DISCORD_CHANNEL_ID_FOR_COMMANDS" }],

    "channels": [
        {
            "channel": "SOURCE_DISCORD_CHANNEL_ID",
            "destination": "files/example-folder"
        }
    ]
}

EXAMPLE: SERVER WITH FRIENDS

{
    "credentials": {
        "token": "YOUR_USER_OR_BOT_TOKEN",
        "email": "YOUR_USER_EMAIL_NO_2FA",
        "password": "YOUR_USER_PASSWORD_NO_2FA"
    },

    "admins": [ "YOUR_DISCORD_USER_ID" ],
    "adminChannels": [{ "channel": "DISCORD_CHANNEL_ID_FOR_COMMANDS" }],

    "save": true,
    "allowCommands": true,
    "scanEdits": true,
    "ignoreBots": false,

    "sendErrorMessages": true,

    "presenceEnabled": true,
    "presenceStatus": "idle",
    "presenceType": 0,
    "presenceLabel": "{{timeSavedShort}} - {{countShort}} files",
    "presenceDetails": "{{timeSavedLong}}",
    "presenceDetails": "{{count}} files total",

    "reactWhenDownloaded": true,
    "reactWhenDownloadedHistory": true,
    "historyTyping": true,

    "channels": [
        {
            "channel": "SOURCE_DISCORD_CHANNEL_ID",
            "destination": "files/example-folder"
        }
    ]
}

EXAMPLE: SCRAPING PUBLIC SERVERS

{
    "credentials": {
        "token": "YOUR_USER_OR_BOT_TOKEN",
        "email": "YOUR_USER_EMAIL_NO_2FA",
        "password": "YOUR_USER_PASSWORD_NO_2FA"
    },

    "admins": [ "YOUR_DISCORD_USER_ID" ],
    "adminChannels": [{ "channel": "DISCORD_CHANNEL_ID_FOR_COMMANDS" }],

    "save": true,
    "allowCommands": false, // they'll probably kick you otherwise.
    "scanEdits": true,
    "ignoreBots": false,

    "sendErrorMessages": false, // they'll probably kick you otherwise.

    "presenceEnabled": false, // they'll probably kick you otherwise.
    "presenceStatus": "invisible", // or "dnd" or "idle"
    
    "reactWhenDownloaded": false, // they'll probably kick you otherwise.
    "reactWhenDownloadedHistory": false, // they'll probably kick you otherwise.
    "historyTyping": false, // they'll probably kick you otherwise.

    "channels": [
        {
            "channel": "SOURCE_DISCORD_CHANNEL_ID",
            "destination": "files/example-folder"
        }
    ]
}
Clone this wiki locally