Skip to content

Instantly share code, notes, and snippets.

@mbaruh
Last active September 18, 2021 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbaruh/4398f6fba9ef5a1c208bb8a4f2e809a9 to your computer and use it in GitHub Desktop.
Save mbaruh/4398f6fba9ef5a1c208bb8a4f2e809a9 to your computer and use it in GitHub Desktop.
Bot Config

The following are configurations that can be used to setup a clone of the Python bot in your own test server. This assumes you created the test server using the provided template:

https://discord.new/zmHtscpYN9E3

Keep in mind that this is not a mirror of the Python server, and is a reduced version for testing purposes. A lot of the channels in the Python server were merged.

To use the config, copy the contents of the code block below into a new file named config.yml in your clone of the bot repository.

Pay attention to the comments with several # symbols, and replace the � characters with the right ID's.

bot:
    ##### <<  The prefix you want for your test bot  >> #####
    prefix:      "!"

    redis:
        host:  "redis"
        password: null
        port:  6379
        use_fakeredis: true

    stats:
        presence_update_timeout: 300
        statsd_host: "graphite.default.svc.cluster.local"

urls:
    # PyDis site vars
    site:        &DOMAIN       "web:8000"
    site_api:    &API    !JOIN ["api.", *DOMAIN]
    site_api_schema:           "http://"
    site_paste:  &PASTE  !JOIN ["paste.", "pythondiscord.com"]
    site_schema: &SCHEMA       "http://"
    site_staff:  &STAFF  !JOIN ["staff.", *DOMAIN]

    paste_service:                      !JOIN ["https://", *PASTE, "/{key}"]
    site_logs_view:                     !JOIN [*SCHEMA, *STAFF, "/bot/logs"]

    # Snekbox
    snekbox_eval_api: "http://localhost:8060/eval"

##### <<  Replace the following � characters with the channel ID's in your test server  >> #####
#  This assumes the template was used: https://discord.new/zmHtscpYN9E3
dev_guild:
    id: &DEV_GUILD_ID   476190141161930753

    categories:
        logs:           &DEV_LOGS               �
        help_available: &DEV_HELP_AVAILABLE     �
        help_occupied:  &DEV_HELP_OCCUPIED      �
        help_dormant:   &DEV_HELP_DORMANT       �
        voice:          &DEV_VOICE              �

    channels:
        # Staff
        admins_mods:            &DEV_ADMINS_MODS            �
        lounge_helpers_org:     &DEV_LOUNGE_HELPERS_ORG     �
        defcon:                 &DEV_DEFCON                 �
        incidents:              &DEV_INCIDENTS              �
        incidents_archive:      &DEV_INCIDENTS_ARCHIVE      �
        staff_announcements:    &DEV_STAFF_ANNOUNCEMENTS    �
        dev_logs:               &DEV_DEV_LOGS               �

        # Logs
        all_logs:   &DEV_ALL_LOGS   �
        bb_logs:    &DEV_BB_LOGS    �
        duck_pond:  &DEV_DUCK_POND  �

        # Available Help Channels
        how_to_get_help:    &DEV_HTGH   �

        # Miscellaneous
        bot_commands:       &DEV_BOT_CMD    �
        general_meta_voice: &DEV_GMV        �
        dev_core_contrib:   &DEV_DEV        �

        # Voice
        voice-verification: &DEV_VOICE_VER      �
        vc:                 &DEV_VC             �
        staff_voice:        &DEV_STAFF_VOICE    �

        # News
        announcements:  &DEV_ANNOUNCEMENTS  �
        py_news:        &DEV_PY_NEWS        �

        # Off-topic
        off_topic_0: &DEV_OT_0  �
        off_topic_1: &DEV_OT_1  �
        off_topic_2: &DEV_OT_2  �

guild:
    ##### <<  Replace the following � characters with the role and webhook ID's in your test server  >> #####
    roles:
        announcements:                          
        contributors:                           
        help_cooldown:                          
        muted:              &MUTED_ROLE         �
        partners:           &PY_PARTNER_ROLE    �
        python_community:   &PY_COMMUNITY_ROLE  �
        voice_verified:                         

        # Staff
        admins:             &ADMINS_ROLE    �
        core_developers:                    
        devops:                             
        domain_leads:                       
        helpers:            &HELPERS_ROLE   �
        moderators:         &MODS_ROLE      �
        mod_team:           &MOD_TEAM_ROLE  �
        owners:             &OWNERS_ROLE    �
        code_jam_event_team:                
        project_leads:                      

        # Code Jam
        jammers:        
        team_leaders:   

        # Streaming
        video: 

    webhooks:
        big_brother:                            
        dev_log:                                
        dm_log:                                 
        duck_pond:                              
        incidents_archive:                      
        python_news:        &PYNEWS_WEBHOOK     �
        reddit:                                 
        talent_pool:                            

    ##### <<  At this point your test bot should be able to mostly work with your test server  >> #####
    #  The following is the actual configs the bot uses, don't delete these.
    id: *DEV_GUILD_ID
    invite: "https://discord.gg/python"

    categories:
        help_available:                     *DEV_HELP_AVAILABLE
        help_dormant:                       *DEV_HELP_DORMANT
        help_in_use:                        *DEV_HELP_OCCUPIED
        logs:                               *DEV_LOGS
        voice:                              *DEV_VOICE

    channels:
        # Public announcement and news channels
        announcements:  *DEV_ANNOUNCEMENTS
        change_log:     *DEV_ANNOUNCEMENTS
        mailing_lists:  *DEV_ANNOUNCEMENTS
        python_events:  *DEV_ANNOUNCEMENTS
        python_news:    *DEV_PY_NEWS

        # Development
        dev_contrib:        *DEV_DEV
        dev_core:           *DEV_DEV
        dev_log:            *DEV_DEV_LOGS

        # Discussion
        meta:                               *DEV_GMV
        python_general:     *DEV_GMV

        # Python Help: Available
        cooldown:           *DEV_HTGH
        how_to_get_help:    *DEV_HTGH

        # Topical
        discord_py:         *DEV_GMV

        # Logs
        attachment_log:     *DEV_ALL_LOGS
        message_log:        *DEV_ALL_LOGS
        mod_log:            *DEV_ALL_LOGS
        user_log:           *DEV_ALL_LOGS
        voice_log:          *DEV_ALL_LOGS

        # Off-topic
        off_topic_0:    *DEV_OT_0
        off_topic_1:    *DEV_OT_1
        off_topic_2:    *DEV_OT_2

        # Special
        bot_commands:       *DEV_BOT_CMD
        voice_gate:         *DEV_VOICE_VER
        code_jam_planning:  *DEV_ADMINS_MODS

        # Staff
        admins:             *DEV_ADMINS_MODS
        admin_spam:         *DEV_ADMINS_MODS
        defcon:             *DEV_DEFCON
        duck_pond:          *DEV_DUCK_POND
        helpers:            *DEV_LOUNGE_HELPERS_ORG
        incidents:                          *DEV_INCIDENTS
        incidents_archive:                  *DEV_INCIDENTS_ARCHIVE
        mods:               *DEV_ADMINS_MODS
        mod_alerts:                         *DEV_ADMINS_MODS
        mod_meta:           *DEV_ADMINS_MODS
        mod_spam:           *DEV_ADMINS_MODS
        mod_tools:          *DEV_ADMINS_MODS
        organisation:       *DEV_LOUNGE_HELPERS_ORG
        staff_lounge:       *DEV_LOUNGE_HELPERS_ORG

        # Staff announcement channels
        admin_announcements:    *DEV_STAFF_ANNOUNCEMENTS
        mod_announcements:      *DEV_STAFF_ANNOUNCEMENTS
        staff_announcements:    *DEV_STAFF_ANNOUNCEMENTS

        # Voice Channels
        admins_voice:       *DEV_STAFF_VOICE
        code_help_voice_1:  *DEV_VC
        code_help_voice_2:  *DEV_VC
        general_voice:      *DEV_VC
        staff_voice:        *DEV_STAFF_VOICE

        # Voice Chat
        code_help_chat_1:                   *DEV_GMV
        code_help_chat_2:                   *DEV_GMV
        staff_voice_chat:                   *DEV_ADMINS_MODS
        voice_chat:                         *DEV_GMV

        # Watch
        big_brother_logs:                   *DEV_BB_LOGS

    moderation_categories:
        - *DEV_LOGS

    moderation_channels:
        - *DEV_ADMINS_MODS

    # Modlog cog ignores events which occur in these channels
    modlog_blacklist:
        - *DEV_ADMINS_MODS
        - *DEV_ALL_LOGS
        - *DEV_STAFF_VOICE

    reminder_whitelist:
        - *DEV_BOT_CMD
        - *DEV_DEV

    moderation_roles:
        - *ADMINS_ROLE
        - *MODS_ROLE
        - *MOD_TEAM_ROLE
        - *OWNERS_ROLE

    staff_roles:
        - *ADMINS_ROLE
        - *HELPERS_ROLE
        - *MODS_ROLE
        - *OWNERS_ROLE

##### <<  The bot shouldn't fail without these, but commands adding specific emojis won't work.  >> #####
#  You should at least set the trashcan. Set the incidents emojis if relevant.
style:
    emojis:
        badge_bug_hunter: "<:bug_hunter_lvl1:�>"
        badge_bug_hunter_level_2: "<:bug_hunter_lvl2:�>"
        badge_early_supporter: "<:early_supporter:�>"
        badge_hypesquad: "<:hypesquad_events:�>"
        badge_hypesquad_balance: "<:hypesquad_balance:�>"
        badge_hypesquad_bravery: "<:hypesquad_bravery:�>"
        badge_hypesquad_brilliance: "<:hypesquad_brilliance:�>"
        badge_partner: "<:partner:�>"
        badge_staff: "<:discord_staff:�>"
        badge_verified_bot_developer: "<:verified_bot_dev:�>"

        defcon_shutdown:    "<:defcondisabled:�>"
        defcon_unshutdown:  "<:defconenabled:�>"
        defcon_update:      "<:defconsettingsupdated:�>"

        failmail: "<:failmail:�>"

        #incident_actioned:      "<:incident_actioned:�>"
        incident_investigating: "<:incident_investigating:�>"
        incident_unactioned:    "<:incident_unactioned:�>"

        status_dnd:     "<:status_dnd:�>"
        status_idle:    "<:status_idle:�>"
        status_offline: "<:status_offline:�>"
        status_online:  "<:status_online:�>"

        trashcan: "<:trashcan:�>"

##### <<  Optional - If you don't care about the filtering and help channel cogs, ignore the rest of this file  >> #####
filter:
    # What do we filter?
    filter_domains:        true
    filter_everyone_ping:  true
    filter_invites:        true
    filter_zalgo:          false
    watch_regex:           true
    watch_rich_embeds:     true

    # Notify user on filter?
    # Notifications are not expected for "watchlist" type filters
    notify_user_domains:        false
    notify_user_everyone_ping:  true
    notify_user_invites:        true
    notify_user_zalgo:          false

    # Filter configuration
    offensive_msg_delete_days: 7     # How many days before deleting an offensive message?
    ping_everyone:             true

    # Censor doesn't apply to these
    channel_whitelist:
        - *DEV_ADMINS_MODS
        - *DEV_BB_LOGS
        - *DEV_ALL_LOGS
        - *DEV_LOUNGE_HELPERS_ORG

    role_whitelist:
        - *ADMINS_ROLE
        - *HELPERS_ROLE
        - *MODS_ROLE
        - *OWNERS_ROLE
        - *PY_COMMUNITY_ROLE
        - *PY_PARTNER_ROLE

help_channels:
    enable: true

    # Minimum interval before allowing a certain user to claim a new help channel
    claim_minutes: 1

    # Roles which are allowed to use the command which makes channels dormant
    cmd_whitelist:
        - *HELPERS_ROLE

    # Allowed duration of inactivity before making a channel dormant
    idle_minutes: 1

    # Allowed duration of inactivity when channel is empty (due to deleted messages)
    # before message making a channel dormant
    deleted_idle_minutes: 1

    # Maximum number of channels to put in the available category
    max_available: 2

    # Maximum number of channels across all 3 categories
    # Note Discord has a hard limit of 50 channels per category, so this shouldn't be > 50
    max_total_channels: 20

    # Prefix for help channel names
    name_prefix: 'help-'

    # Notify if more available channels are needed but there are no more dormant ones
    notify: true

    # Channel in which to send notifications
    notify_channel: *DEV_LOUNGE_HELPERS_ORG

    # Minimum interval between helper notifications
    notify_minutes: 5

    # Mention these roles in notifications
    notify_roles:
        - *HELPERS_ROLE

##### <<  Add any additional sections you need to override from config-default.yml  >> #####
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment