Skip to content

Settings Examples

DRN edited this page Apr 28, 2024 · 17 revisions

IF YOU ARE NOT USING .JSONC MAKE SURE YOU REMOVE ANY // COMMENTS IN THIS DOCUMENTATION.

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

FOR HELP WITH JSON FORMATTING, SEE BELOW EXAMPLES.


EXAMPLE: Bare Minimum

Minimum requirements for the bot to function. Assumes default values for everything missing.

{
    "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: Personal Server

Intended for a genuine bot application you can just invite to your server or friends server to scrape media.

{
    "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: Public Servers

Intended for a user account (selfbot) you can stealthily use to scrape public servers without anyone knowing.

{
    "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"
        }
    ]
}

EXAMPLE: Binding to Categories, Servers, Users

Having the bot listen to categories, servers, or users instead of (or alongside) channels.

{
    "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" }],

    "categories": [
        {
            "category": "SOURCE_DISCORD_CATEGORY_ID",
            "destination": "files/example-folder"
        }
    ],
    "servers": [
        {
            "server": "SOURCE_DISCORD_SERVER_ID",
            "destination": "files/example-folder-2"
        }
    ],
    "users": [
        {
            "user": "SOURCE_DISCORD_USER_ID",
            "destination": "files/example-folder-3"
        }
    ]
}

EXAMPLE: Multi-Channel, Multi-Category, Multi-Server, Multi-User

Assigning one configuration to multiple channels, categories, servers, and/or users.

{
    "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": [
        {
            // Simply swap "channel" for "channels" and use an array of strings instead of one single string.
            "channels": [ "SOURCE_DISCORD_CHAN_ID_1", "SOURCE_DISCORD_CHAN_ID_2", "SOURCE_DISCORD_CHAN_ID_3" ],
            "destination": "files/example-folder"
        }
    ],

    "categories": [
        {
            // Simply swap "category" for "categories" and use an array of strings instead of one single string.
            "categories": [ "SOURCE_DISCORD_CAT_ID_1", "SOURCE_DISCORD_CAT_ID_2", "SOURCE_DISCORD_CAT_ID_3" ],
            "destination": "files/example-folder"
        }
    ],

    "servers": [
        {
            // Simply swap "server" for "servers" and use an array of strings instead of one single string.
            "servers": [ "SOURCE_DISCORD_SERV_ID_1", "SOURCE_DISCORD_SERV_ID_2", "SOURCE_DISCORD_SERV_ID_3" ],
            "destination": "files/example-folder"
        }
    ],

    "users": [
        {
            // Simply swap "user" for "users" and use an array of strings instead of one single string.
            "users": [ "SOURCE_DISCORD_USER_ID_1", "SOURCE_DISCORD_USER_ID_2", "SOURCE_DISCORD_USER_ID_3" ],
            "destination": "files/example-folder"
        }
    ]
}

EXAMPLE: My Personal Genuine Bot

A modified version of my personal live instance for servers with friends using a genuine Discord bot application.

{
    "_constants": {
        "__token": "MY_DISCORD_TOKEN_HERE",
        "__instagram_username": "MY_IG_BURNER_USERNAME_HERE",
        "__instagram_password": "MY_IG_BURNER_PASSWORD_HERE",
        "__twitter_username": "MY_TWITTER_BURNER_USERNAME_HERE",
        "__twitter_password": "MY_TWITTER_BURNER_PASSWORD_HERE",
        "__flickr_api_key": "MY_FLICKR_API_KEY_HERE",

        //---
        
        "__USER_ME": "MY_DISCORD_USER_ID_HERE",

        //---
        
        "__CHANNEL_P_DDG_ADMIN": "MY_PERSONAL_DDG_ADMIN_CHANNEL_ID",

        //---

        "__SERVER_OLD_SERVER": "111111111111111111111111",

        "__CHANNEL_OLD_SERVER_GEN": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_MEMES": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_VIDEOS": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_INTERESTING": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_NEWS": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_NSFW": "111111111111111111111111",

        "__CHANNEL_OLD_SERVER_GAME_SCREENSHOTS": "111111111111111111111111",

        "__CHANNEL_OLD_SERVER_PINS": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_PLANNING": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_UPLOADS": "111111111111111111111111",
        "__CHANNEL_OLD_SERVER_ARCHIVE": "111111111111111111111111",

        //---

        "__SERVER_FRIENDS": "111111111111111111111111",

        "__CHANNEL_FRIENDS_GEN": "111111111111111111111111",
        "__CHANNEL_FRIENDS_MEMES": "111111111111111111111111",
        "__CHANNEL_FRIENDS_TIKTOK": "111111111111111111111111",
        "__CHANNEL_FRIENDS_VIDEOS": "111111111111111111111111",
        "__CHANNEL_FRIENDS_INTERESTING": "111111111111111111111111",
        "__CHANNEL_FRIENDS_NEWS": "111111111111111111111111",
        "__CHANNEL_FRIENDS_NSFW": "111111111111111111111111",

        "__CHANNEL_FRIENDS_PINS": "111111111111111111111111",
        "__CHANNEL_FRIENDS_PLANNING": "111111111111111111111111",
        "__CHANNEL_FRIENDS_UPLOADS": "111111111111111111111111",

        //---

        "__SERVER_OTHER_FRIENDS": "111111111111111111111111",

        "__CHANNEL_OTHER_FRIENDS_GEN": "111111111111111111111111",
        "__CHANNEL_OTHER_FRIENDS_MEMES": "111111111111111111111111",
        "__CHANNEL_OTHER_FRIENDS_QUOTES": "111111111111111111111111",

        "-------": "----------"

    },

    "credentials": {
        "token": "__token",
        "instagramUsername": "__instagram_username",
        "instagramPassword": "__instagram_password",
        "twitterUsername": "__twitter_username",
        "twitterPassword": "__twitter_password",
        "flickrApiKey": "__flickr_api_key"
    },
    
    "admins": [ "__USER_ME" ],
    "adminChannels": [
        {
            "channel": "__CHANNEL_P_DDG_ADMIN",
            "logStatus": true,
            "logErrors": true
        }
    ],

    "overwriteTwitterPath": "/home/bots/shared/twitter_cookies.json",
    "overwriteInstagramPath": "/home/bots/shared/instagram_cookies.json",

    "githubUpdateChecking": false,
    "exitOnBadConnection": false,

    "debug": true,

    "downloadRetryMax": 3,
    "downloadTimeout": 30,

    "commandPrefix": "ddg ",
    "autoHistory": false,

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

    "channels": [
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_GEN",
                "__CHANNEL_FRIENDS_GEN",
                "__CHANNEL_OTHER_FRIENDS_GEN"
            ],
            "destination": "/var/www/html/files/ddg/gen",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}",
                "{{channelName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": false
        },
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_MEMES",
                "__CHANNEL_FRIENDS_MEMES"
            ],
            "destination": "/var/www/html/files/ddg/memes",
            "enabled": true,
            "allowCommands": true,
            "sendErrorMessages": true,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": true,

            "subfolders": [
                "{{serverName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": true
        },
        {
            "channels": [
                "__CHANNEL_OTHER_FRIENDS_MEMES"
            ],
            "destination": "/var/www/html/files/ddg/memes",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": true
        },
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_VIDEOS",
                "__CHANNEL_FRIENDS_VIDEOS"
            ],
            "destination": "/var/www/html/files/ddg/videos",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}",
                "{{channelName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": true,
            "saveOtherFiles": true
        },
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_INTERESTING",
                "__CHANNEL_FRIENDS_INTERESTING"
            ],
            "destination": "/var/www/html/files/ddg/interesting",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}",
                "{{channelName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": false
        },
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_NEWS",
                "__CHANNEL_FRIENDS_NEWS"
            ],
            "destination": "/var/www/html/files/ddg/news",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}",
                "{{channelName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": false
        },
        {
            "channels": [ "__CHANNEL_OLD_SERVER_NSFW", "__CHANNEL_FRIENDS_NSFW" ],
            "destination": "/var/www/html/files/ddg/nsfw",
            "enabled": true,
            "allowCommands": true,
            "sendErrorMessages": true,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": true,

            "subfolders": [
                "{{serverName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": false,
            "saveOtherFiles": false
        },
        {
            "channels": [
                "__CHANNEL_OLD_SERVER_PINS",
                "__CHANNEL_OLD_SERVER_PLANNING",
                "__CHANNEL_OLD_SERVER_UPLOADS",
                "__CHANNEL_OLD_SERVER_ARCHIVE",
                "__CHANNEL_FRIENDS_PINS",
                "__CHANNEL_FRIENDS_PLANNING",
                "__CHANNEL_FRIENDS_UPLOADS"
            ],
            "destination": "/var/www/html/files/ddg/pins",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": true,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}",
                "{{channelName}}"
            ],

            "saveImages": true,
            "saveVideos": true,
            "saveAudioFiles": true,
            "saveTextFiles": true,
            "saveOtherFiles": true
        }
    ]
}

EXAMPLE: My Personal Selfbot (User Account)

A modified version of my personal live instance for scraping public servers using a Discord user account (selfbot).

{
    "_constants": {
        "__token": "MY_SELFBOT_TOKEN",
        "__flickr_api_key": "MY_FLICKR_API_KEY",
        
        //---

        "__USER_ME": "MY_DISCORD_USER_ID",
        
        //---

        "__CHANNEL_P_DDG_UBADMIN": "MY_DISCORD_ADMIN_CHANNEL_FOR_COMMANDS",

        //---

        "__CHANNEL_MEMESERVER1_MEMES": "1111111111111111111",

        //---

        "__CHANNEL_MEMESERVER2_MEMES": "1111111111111111111",
        "__CHANNEL_MEMESERVER2_NSFW_MEMES": "1111111111111111111",

        //---

        "__CHANNEL_MEMESERVER3_SHITPOSTING": "1111111111111111111",

        //---
        
        "__CHANNEL_MEMESERVER4_MEMES": "1111111111111111111",
        "__CHANNEL_MEMESERVER4_NSFW_MEMES": "1111111111111111111",

        //---
        "-------": "----------"
    },

    "credentials": {
        "token": "__token",
        "flickrApiKey": "__flickr_api_key"
    },
    "admins": [ "__USER_ME" ],
    "adminChannels": [
        {
            "channel": "__CHANNEL_P_DDG_UBADMIN"
        }
    ],
    "overwriteTwitterPath": "/home/bots/shared/twitter_cookies.json",
    "overwriteInstagramPath": "/home/bots/shared/instagram_cookies.json",
    "debug": true,
    "allowSkipping": true,
    "scanOwnMessages": false,
    "autoHistory": true,
    "githubUpdateChecking": false,
    "presenceEnabled": false,
    "exitOnBadConnection": false,
    "presenceStatus": "invisible",
    "channels": [
        {
            "channels": [
                "__CHANNEL_MEMESERVER1_MEMES",
                "__CHANNEL_MEMESERVER2_MEMES",
                "__CHANNEL_MEMESERVER3_SHITPOSTING",
                "__CHANNEL_MEMESERVER4_MEMES"
             ],
            "destination": "/var/www/html/files/ddg/memes",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": false,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}"
            ]
        },
        {
            "channels": [
                "__CHANNEL_MEMESERVER2_NSFW_MEMES",
                "__CHANNEL_MEMESERVER4_NSFW_MEMES"
             ],
            "destination": "/var/www/html/files/ddg/nsfw",
            "enabled": true,
            "allowCommands": false,
            "sendErrorMessages": false,
            "scanEdits": true,

            "presenceEnabled": false,
            "reactWhenDownloaded": false,

            "subfolders": [
                "{{serverName}}"
            ]
        }
    ]
}

EXAMPLE: YAML

credentials:
    token: REPLACE_WITH_YOUR_TOKEN_OR_DELETE_LINE
    email: REPLACE_WITH_YOUR_EMAIL_OR_DELETE_LINE
    password: REPLACE_WITH_YOUR_PASSWORD_OR_DELETE_LINE
admins:
    - "YOUR_DISCORD_USER_ID"
adminChannels:
    - channel: "DISCORD_ID_FOR_CHANNEL_FOR_COMMANDS"
      logProgram: false
      logStatus: true
      logErrors: true
      unlockCommands: false
logOutput: log.txt
logIndent: true
processLimit: 32
debug: true
backupDatabaseOnStart: false
watchSettings: false
settingsOutput: true
messageOutput: true
messageOutputHistory: false
discordLogLevel: 0
discordTimeout: 180
downloadTimeout: 60
downloadRetryMax: 2
exitOnBadConnection: false
githubUpdateChecking: true
commandPrefix: 'ddg '
commandTagging: true
scanOwnMessages: false
allowGeneralCommands: true
historyManagerRate: 5
checkupRate: 30
connectionCheckRate: 5
presenceRefreshRate: 3
save: true
allowCommands: true
scanEdits: true
ignoreBots: true
sendErrorMessages: false
filenameDateFormat: 2006-01-02_15-04-05
filenameFormat: '{{date}} {{file}}'
reactWhenDownloaded: false
reactWhenDownloadedHistory: false
historyMaxJobs: 3
sendHistoryStatus: true
subfolders:
    - "{{fileType}}"
saveImages: true
saveVideos: true
saveAudioFiles: true
saveTextFiles: false
saveOtherFiles: false
savePossibleDuplicates: false
filters:
    blockedExtensions:
        - .htm
        - .html
        - .php
        - .exe
        - .dll
        - .bin
        - .cmd
        - .sh
        - .py
        - .jar
channels:
    - channel: "TEST_CHANNEL_ID"
      destination: ddg-test