aboutsummaryrefslogtreecommitdiffstats
path: root/config-default.yml
diff options
context:
space:
mode:
authorGravatar Amrou Bellalouna <[email protected]>2023-03-09 07:34:54 +0100
committerGravatar GitHub <[email protected]>2023-03-09 09:34:54 +0300
commit12fe15baa5f3ea5d35d43d27ff671dca5fe58334 (patch)
treeb8c3b61f6a0ee959c8d6e2748e2d8a04c97e1321 /config-default.yml
parentMerge pull request #2449 from python-discord/update-deps (diff)
Merge #2408: Scaffold server config via a bootstrapping script
Refactor configuration into a pydantic-based python constants file, and add a utility to auto-populate guild data. Squashed commits: * use basic config for demo purposes * fix guiding comments * update var names for proper context reflection * fix wront iteration var * add all roles, & channels * load categories * separate sections in env file * ignore .env.server * rename change_log to changelog This also adds a default env file to look for * remove instantiation of webhooks * add most of the default configs These will mostly be fetched from the .env.default file, which won't be bootstrapped * warn when categories/roles/channels are not found * add env file to keep server defaults * fix malformatted value in the .env.default * add default server env variables * update the sections formatting in default env file * fallback to server env when loading constants * add guild basic defaults * update change_log channel name to changelog * add the Guid settings prefix * make _Guild inherit from EnvConfig * add webhook defaults * add python_news defaults to the server env * ad missing webhooks prefix * update bootstrapper logger name * update priority of the env loaded files According to Pydantic's docs: "Later files in the list/tuple will take priority over earlier files." * warn user that default value from PyDis' config will be used * add colours default config * add antispam config * update antispam references * add redis default cfg * add Stats, Cooldowns and CleanMessages consts This also includes their default values * add Metabase to constants This also includes its default values * add URLS to constants This also includes its default values * use the Field class to provide defaults This avoids overriding & changing the `fields` of the `Config` class "dynamically" * add keys constant class * add Guild conf * replace dash with underscore in script * appease linter * transform attributes of AntiSpam to dict when needed This ensures that the application stays backwards compatible * add root_validator for the colours class This enables the conversion from hex to int easily since it's not a supported type by pydantic * reinstate the role & channels combinations * rename URLS to URLs * add emojis & icons constants * add filter constants & their default values * remove all useless spaces * instantiate the keys class * add bot prefix to default env file * fetch Bot constants from env vars instead of the prefix ones * add Miscellaneous config * instantiate poor forgotten Miscellaneous config * add final touches to the constants module This includes removing dups, adding missing channels & fixing type casts * move all default values to constants.py This is done by using the `Field` class. It allows us to 1. Set defaults, in case the variables are not configured 2. Load them from a env variable under a specific name (for backwards comp) 3. load it from any env variable file that contains the right prefix * ignore all .env files * load BOT_TOKEN & GUILD_ID from .env * allow _GUILD to read its id from the `GUILD_ID` env var * base Webhooks settings off of a Webhook model * create necessary webhooks if non existent * appease flake8 docstrings error * make the script idempotent * update type hints * uppercase all consts * make webhook channel optional * add httpx to its own dependency group This group will be optional & only related to the bootstrapper * replace requests with httpx * pass client as param * include raise_for_status as a response hook * rename get_webhook to webhook_exists * update docstring of the constants module * use "." as a separator * update script to account for already created webhooks * make ANTI_SPAM_RULES a module level constant This ensures that flake8 doesn't complain about making a function call in the function's signature * remove the manual resolving of .env paths * update usages of AntiSpam constants * remove forgotten assignment of rule_config * remove useless assignments of env file names * delete default config-default.yml * update docstrings of CodeBlockCog to reference constants.py * add a poetry task that runs the bootstrapping script * add python-dotenv to the config-bootstrap group * update hook name to _raise_for_status * construct site_api in _URLs * remove __name__ == '__main__'guard * Revert "construct site_api in _URLs" This reverts commit 1c555c4280c6a0bdd452319cbd3ffcd0370f5d48. * remove usage of the Field class * update env var keys that the bootstrapping script needs * use API_KEYS.SITE_API as env var in docker compose instead of BOT_API_KEY * use basic config for demo purposes * fix guiding comments * update var names for proper context reflection * fix wront iteration var * add all roles, & channels * load categories * separate sections in env file * ignore .env.server * rename change_log to changelog This also adds a default env file to look for * remove instantiation of webhooks * add most of the default configs These will mostly be fetched from the .env.default file, which won't be bootstrapped * warn when categories/roles/channels are not found * add env file to keep server defaults * fix malformatted value in the .env.default * add default server env variables * update the sections formatting in default env file * fallback to server env when loading constants * add guild basic defaults * update change_log channel name to changelog * add the Guid settings prefix * make _Guild inherit from EnvConfig * add webhook defaults * add python_news defaults to the server env * ad missing webhooks prefix * update bootstrapper logger name * update priority of the env loaded files According to Pydantic's docs: "Later files in the list/tuple will take priority over earlier files." * warn user that default value from PyDis' config will be used * add colours default config * add antispam config * update antispam references * add redis default cfg * add Stats, Cooldowns and CleanMessages consts This also includes their default values * add Metabase to constants This also includes its default values * add URLS to constants This also includes its default values * use the Field class to provide defaults This avoids overriding & changing the `fields` of the `Config` class "dynamically" * add keys constant class * add Guild conf * replace dash with underscore in script * appease linter * transform attributes of AntiSpam to dict when needed This ensures that the application stays backwards compatible * add root_validator for the colours class This enables the conversion from hex to int easily since it's not a supported type by pydantic * reinstate the role & channels combinations * rename URLS to URLs * add emojis & icons constants * add filter constants & their default values * remove all useless spaces * instantiate the keys class * add bot prefix to default env file * fetch Bot constants from env vars instead of the prefix ones * add Miscellaneous config * instantiate poor forgotten Miscellaneous config * add final touches to the constants module This includes removing dups, adding missing channels & fixing type casts * move all default values to constants.py This is done by using the `Field` class. It allows us to 1. Set defaults, in case the variables are not configured 2. Load them from a env variable under a specific name (for backwards comp) 3. load it from any env variable file that contains the right prefix * ignore all .env files * load BOT_TOKEN & GUILD_ID from .env * allow _GUILD to read its id from the `GUILD_ID` env var * base Webhooks settings off of a Webhook model * create necessary webhooks if non existent * appease flake8 docstrings error * make the script idempotent * update type hints * uppercase all consts * make webhook channel optional * add httpx to its own dependency group This group will be optional & only related to the bootstrapper * replace requests with httpx * pass client as param * include raise_for_status as a response hook * rename get_webhook to webhook_exists * update docstring of the constants module * use "." as a separator * update script to account for already created webhooks * make ANTI_SPAM_RULES a module level constant This ensures that flake8 doesn't complain about making a function call in the function's signature * remove the manual resolving of .env paths * update usages of AntiSpam constants * remove forgotten assignment of rule_config * remove useless assignments of env file names * delete default config-default.yml * update docstrings of CodeBlockCog to reference constants.py * add a poetry task that runs the bootstrapping script * add python-dotenv to the config-bootstrap group * update hook name to _raise_for_status * construct site_api in _URLs * remove __name__ == '__main__'guard * Revert "construct site_api in _URLs" This reverts commit 1c555c4280c6a0bdd452319cbd3ffcd0370f5d48. * remove usage of the Field class * update env var keys that the bootstrapping script needs * use API_KEYS.SITE_API as env var in docker compose instead of BOT_API_KEY * relock dependencies * update snekbox's defaults * add support for ot channels * rename help_system_forum to python_help * rename nomination_archive to nomination_voting_archive * rename appeals2 to appeals_2 * yeet sprinters role out * rename all big_brother_logs instances to big_brother The purpose is to adhere to what we have in prod * rename bootstrap_config.py to botstrap.py * update module name of the configure poetry task * update error messages to reflect the new keys needed for env variables * install dotenv as an extra with pydantic * update all prefixes to "_" (underscore) * log tuple of (channel_name, channel_id) in the config verifier * update needed default values for docker compose env var * relock dependencies * update forgotten delimiters & env prefixes
Diffstat (limited to 'config-default.yml')
-rw-r--r--config-default.yml560
1 files changed, 0 insertions, 560 deletions
diff --git a/config-default.yml b/config-default.yml
deleted file mode 100644
index de0f7e4e8..000000000
--- a/config-default.yml
+++ /dev/null
@@ -1,560 +0,0 @@
-debug: !ENV ["BOT_DEBUG", "true"]
-file_logs: !ENV ["FILE_LOGS", "false"]
-
-
-bot:
- prefix: "!"
- sentry_dsn: !ENV "BOT_SENTRY_DSN"
- token: !ENV "BOT_TOKEN"
- trace_loggers: !ENV "BOT_TRACE_LOGGERS"
-
- clean:
- # Maximum number of messages to traverse for clean commands
- message_limit: 10000
-
- cooldowns:
- # Per channel, per tag.
- tags: 60
-
- redis:
- host: "redis.default.svc.cluster.local"
- password: !ENV "REDIS_PASSWORD"
- port: 6379
- use_fakeredis: false
-
- stats:
- presence_update_timeout: 300
- statsd_host: "graphite.default.svc.cluster.local"
-
-
-style:
- colours:
- blue: 0x3775a8
- bright_green: 0x01d277
- orange: 0xe67e22
- pink: 0xcf84e0
- purple: 0xb734eb
- soft_green: 0x68c290
- soft_orange: 0xf9cb54
- soft_red: 0xcd6d6d
- white: 0xfffffe
- yellow: 0xffd241
-
- emojis:
- badge_bug_hunter: "<:bug_hunter_lvl1:743882896372269137>"
- badge_bug_hunter_level_2: "<:bug_hunter_lvl2:743882896611344505>"
- badge_early_supporter: "<:early_supporter:743882896909140058>"
- badge_hypesquad: "<:hypesquad_events:743882896892362873>"
- badge_hypesquad_balance: "<:hypesquad_balance:743882896460480625>"
- badge_hypesquad_bravery: "<:hypesquad_bravery:743882896745693335>"
- badge_hypesquad_brilliance: "<:hypesquad_brilliance:743882896938631248>"
- badge_partner: "<:partner:748666453242413136>"
- badge_staff: "<:discord_staff:743882896498098226>"
- badge_verified_bot_developer: "<:verified_bot_dev:743882897299210310>"
- bot: "<:bot:812712599464443914>"
- verified_bot: "<:verified_bot:811645219220750347>"
-
- defcon_shutdown: "<:defcondisabled:470326273952972810>"
- defcon_unshutdown: "<:defconenabled:470326274213150730>"
- defcon_update: "<:defconsettingsupdated:470326274082996224>"
-
- failmail: "<:failmail:633660039931887616>"
-
- incident_actioned: "<:incident_actioned:714221559279255583>"
- incident_investigating: "<:incident_investigating:714224190928191551>"
- incident_unactioned: "<:incident_unactioned:714223099645526026>"
-
- status_dnd: "<:status_dnd:470326272082313216>"
- status_idle: "<:status_idle:470326266625785866>"
- status_offline: "<:status_offline:470326266537705472>"
- status_online: "<:status_online:470326272351010816>"
-
- ducky_dave: "<:ducky_dave:742058418692423772>"
-
- trashcan: "<:trashcan:637136429717389331>"
-
- bullet: "\u2022"
- check_mark: "\u2705"
- cross_mark: "\u274C"
- new: "\U0001F195"
- pencil: "\u270F"
-
- ok_hand: ":ok_hand:"
-
- icons:
- crown_blurple: "https://cdn.discordapp.com/emojis/469964153289965568.png"
- crown_green: "https://cdn.discordapp.com/emojis/469964154719961088.png"
- crown_red: "https://cdn.discordapp.com/emojis/469964154879344640.png"
-
- defcon_denied: "https://cdn.discordapp.com/emojis/472475292078964738.png"
- defcon_shutdown: "https://cdn.discordapp.com/emojis/470326273952972810.png"
- defcon_unshutdown: "https://cdn.discordapp.com/emojis/470326274213150730.png"
- defcon_update: "https://cdn.discordapp.com/emojis/472472638342561793.png"
-
- filtering: "https://cdn.discordapp.com/emojis/472472638594482195.png"
-
- green_checkmark: "https://raw.githubusercontent.com/python-discord/branding/main/icons/checkmark/green-checkmark-dist.png"
- green_questionmark: "https://raw.githubusercontent.com/python-discord/branding/main/icons/checkmark/green-question-mark-dist.png"
- guild_update: "https://cdn.discordapp.com/emojis/469954765141442561.png"
-
- hash_blurple: "https://cdn.discordapp.com/emojis/469950142942806017.png"
- hash_green: "https://cdn.discordapp.com/emojis/469950144918585344.png"
- hash_red: "https://cdn.discordapp.com/emojis/469950145413251072.png"
-
- message_bulk_delete: "https://cdn.discordapp.com/emojis/469952898994929668.png"
- message_delete: "https://cdn.discordapp.com/emojis/472472641320648704.png"
- message_edit: "https://cdn.discordapp.com/emojis/472472638976163870.png"
-
- pencil: "https://cdn.discordapp.com/emojis/470326272401211415.png"
-
- questionmark: "https://cdn.discordapp.com/emojis/512367613339369475.png"
-
- remind_blurple: "https://cdn.discordapp.com/emojis/477907609215827968.png"
- remind_green: "https://cdn.discordapp.com/emojis/477907607785570310.png"
- remind_red: "https://cdn.discordapp.com/emojis/477907608057937930.png"
-
- sign_in: "https://cdn.discordapp.com/emojis/469952898181234698.png"
- sign_out: "https://cdn.discordapp.com/emojis/469952898089091082.png"
-
- superstarify: "https://cdn.discordapp.com/emojis/636288153044516874.png"
- unsuperstarify: "https://cdn.discordapp.com/emojis/636288201258172446.png"
-
- token_removed: "https://cdn.discordapp.com/emojis/470326273298792469.png"
-
- user_ban: "https://cdn.discordapp.com/emojis/469952898026045441.png"
- user_mute: "https://cdn.discordapp.com/emojis/472472640100106250.png"
- user_unban: "https://cdn.discordapp.com/emojis/469952898692808704.png"
- user_unmute: "https://cdn.discordapp.com/emojis/472472639206719508.png"
- user_update: "https://cdn.discordapp.com/emojis/469952898684551168.png"
- user_verified: "https://cdn.discordapp.com/emojis/470326274519334936.png"
- user_warn: "https://cdn.discordapp.com/emojis/470326274238447633.png"
-
- voice_state_blue: "https://cdn.discordapp.com/emojis/656899769662439456.png"
- voice_state_green: "https://cdn.discordapp.com/emojis/656899770094452754.png"
- voice_state_red: "https://cdn.discordapp.com/emojis/656899769905709076.png"
-
-
-guild:
- id: 267624335836053506
- invite: "https://discord.gg/python"
-
- categories:
- logs: &LOGS 468520609152892958
- moderators: &MODS_CATEGORY 749736277464842262
- modmail: &MODMAIL 714494672835444826
- appeals: &APPEALS 890331800025563216
- appeals2: &APPEALS2 895417395261341766
- voice: 356013253765234688
- summer_code_jam: 861692638540857384
-
- channels:
- # Public announcement and news channels
- announcements: &ANNOUNCEMENTS 354619224620138496
- change_log: &CHANGE_LOG 748238795236704388
- mailing_lists: &MAILING_LISTS 704372456592506880
- python_events: &PYEVENTS_CHANNEL 729674110270963822
- python_news: &PYNEWS_CHANNEL 704372456592506880
- reddit: &REDDIT_CHANNEL 458224812528238616
-
- # Development
- dev_contrib: &DEV_CONTRIB 635950537262759947
- dev_core: &DEV_CORE 411200599653351425
- dev_voting: &DEV_CORE_VOTING 839162966519447552
- dev_log: &DEV_LOG 622895325144940554
-
- # Discussion
- meta: 429409067623251969
- python_general: &PY_GENERAL 267624335836053506
-
- # Python Help
- help_system_forum: 1035199133436354600
-
- # Topical
- discord_bots: 343944376055103488
-
- # Logs
- attachment_log: &ATTACH_LOG 649243850006855680
- filter_log: &FILTER_LOG 1014943924185473094
- message_log: &MESSAGE_LOG 467752170159079424
- mod_log: &MOD_LOG 282638479504965634
- nomination_archive: 833371042046148738
- user_log: 528976905546760203
- voice_log: 640292421988646961
-
- # Open Source Projects
- black_formatter: &BLACK_FORMATTER 846434317021741086
-
- # Off-topic
- off_topic_0: 291284109232308226
- off_topic_1: 463035241142026251
- off_topic_2: 463035268514185226
-
- # Special
- bot_commands: &BOT_CMD 267659945086812160
- esoteric: 470884583684964352
- voice_gate: 764802555427029012
- code_jam_planning: 490217981872177157
-
- # Staff
- admins: &ADMINS 365960823622991872
- admin_spam: &ADMIN_SPAM 563594791770914816
- defcon: &DEFCON 464469101889454091
- duck_pond: &DUCK_POND 637820308341915648
- helpers: &HELPERS 385474242440986624
- incidents: 714214212200562749
- incidents_archive: 720668923636351037
- mod_alerts: 473092532147060736
- mods: &MODS 305126844661760000
- mod_meta: 775412552795947058
- nominations: 822920136150745168
- nomination_voting: 822853512709931008
- organisation: &ORGANISATION 551789653284356126
- staff_lounge: &STAFF_LOUNGE 464905259261755392
- staff_info: &STAFF_INFO 396684402404622347
-
- # Staff announcement channels
- admin_announcements: &ADMIN_ANNOUNCEMENTS 749736155569848370
- mod_announcements: &MOD_ANNOUNCEMENTS 372115205867700225
- staff_announcements: &STAFF_ANNOUNCEMENTS 464033278631084042
-
- # Voice Channels
- admins_voice: &ADMINS_VOICE 500734494840717332
- code_help_voice_0: 751592231726481530
- code_help_voice_1: 764232549840846858
- general_voice_0: 751591688538947646
- general_voice_1: 799641437645701151
- staff_voice: &STAFF_VOICE 412375055910043655
-
- # Voice Chat
- code_help_chat_0: 755154969761677312
- code_help_chat_1: 766330079135268884
- staff_voice_chat: 541638762007101470
- voice_chat_0: 412357430186344448
- voice_chat_1: 799647045886541885
-
- # Watch
- big_brother_logs: &BB_LOGS 468507907357409333
-
- # Information
- roles: 851270062434156586
-
- moderation_categories:
- - *MODS_CATEGORY
- - *MODMAIL
- - *LOGS
- - *APPEALS
- - *APPEALS2
-
- moderation_channels:
- - *ADMINS
- - *ADMIN_SPAM
- - *MODS
-
- # Modlog cog explicitly ignores events which occur in these channels.
- # This is on top of implicitly ignoring events in channels that the mod team cannot view.
- modlog_blacklist:
- - *ATTACH_LOG
- - *MESSAGE_LOG
- - *MOD_LOG
- - *STAFF_VOICE
- - *FILTER_LOG
-
- reminder_whitelist:
- - *BOT_CMD
- - *DEV_CONTRIB
- - *BLACK_FORMATTER
-
- roles:
- # Self-assignable roles, see the Subscribe cog
- advent_of_code: 518565788744024082
- announcements: 463658397560995840
- lovefest: 542431903886606399
- pyweek_announcements: 897568414044938310
- revival_of_code: 988801794668908655
- legacy_help_channels_access: 1074780483776417964
-
- contributors: 295488872404484098
- help_cooldown: 699189276025421825
- muted: &MUTED_ROLE 277914926603829249
- partners: &PY_PARTNER_ROLE 323426753857191936
- python_community: &PY_COMMUNITY_ROLE 458226413825294336
- sprinters: &SPRINTERS 758422482289426471
- voice_verified: 764802720779337729
-
- # Staff
- admins: &ADMINS_ROLE 267628507062992896
- core_developers: 587606783669829632
- code_jam_event_team: 787816728474288181
- devops: 409416496733880320
- domain_leads: 807415650778742785
- events_lead: 778361735739998228
- helpers: &HELPERS_ROLE 267630620367257601
- moderators: &MODS_ROLE 831776746206265384
- mod_team: &MOD_TEAM_ROLE 267629731250176001
- owners: &OWNERS_ROLE 267627879762755584
- project_leads: 815701647526330398
-
- # Code Jam
- jammers: 737249140966162473
-
- # Streaming
- video: 764245844798079016
-
- # Patreon
- patreon_tier_1: 505040943800516611
- patreon_tier_2: 743399725914390631
- patreon_tier_3: 743400204367036520
-
- moderation_roles:
- - *ADMINS_ROLE
- - *MOD_TEAM_ROLE
- - *MODS_ROLE
- - *OWNERS_ROLE
-
- staff_roles:
- - *ADMINS_ROLE
- - *HELPERS_ROLE
- - *MOD_TEAM_ROLE
- - *OWNERS_ROLE
-
- webhooks:
- big_brother: 569133704568373283
- dev_log: 680501655111729222
- duck_pond: 637821475327311927
- incidents: 816650601844572212
- incidents_archive: 720671599790915702
- python_news: &PYNEWS_WEBHOOK 704381182279942324
-
-
-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:
- - *ADMINS
- - *BB_LOGS
- - *DEV_LOG
- - *MESSAGE_LOG
- - *MOD_LOG
- - *STAFF_LOUNGE
-
- role_whitelist:
- - *ADMINS_ROLE
- - *HELPERS_ROLE
- - *MODS_ROLE
- - *OWNERS_ROLE
- - *PY_COMMUNITY_ROLE
- - *SPRINTERS
- - *PY_PARTNER_ROLE
-
-
-keys:
- github: !ENV "GITHUB_API_KEY"
- site_api: !ENV "BOT_API_KEY"
-
-
-urls:
- # PyDis site vars
- connect_max_retries: 3
- connect_cooldown: 5
- site: &DOMAIN "pythondiscord.com"
- site_api: &API "site.default.svc.cluster.local/api"
- site_api_schema: "http://"
- site_paste: &PASTE !JOIN ["paste.", *DOMAIN]
- site_schema: &SCHEMA "https://"
- site_staff: &STAFF !JOIN [*SCHEMA, *DOMAIN, "/staff"]
-
- paste_service: !JOIN [*SCHEMA, *PASTE, "/{key}"]
- site_logs_view: !JOIN [*STAFF, "/bot/logs"]
-
- # Snekbox
- snekbox_eval_api: !ENV ["SNEKBOX_EVAL_API", "http://snekbox.default.svc.cluster.local/eval"]
- snekbox_311_eval_api: !ENV ["SNEKBOX_311_EVAL_API", "http://snekbox-311.default.svc.cluster.local/eval"]
-
- # Discord API URLs
- discord_api: &DISCORD_API "https://discordapp.com/api/v7/"
- discord_invite_api: !JOIN [*DISCORD_API, "invites"]
-
- # Misc URLsw
- bot_avatar: "https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_circle/logo_circle.png"
- github_bot_repo: "https://github.com/python-discord/bot"
-
-
-anti_spam:
- cache_size: 100
-
- # Clean messages that violate a rule.
- clean_offending: true
- ping_everyone: true
-
- punishment:
- remove_after: 600
- role_id: *MUTED_ROLE
-
- rules:
- attachments:
- interval: 10
- max: 6
-
- burst:
- interval: 10
- max: 7
-
- # Burst shared it (temporarily) disabled to prevent
- # the bug that triggers multiple infractions/DMs per
- # user. It also tends to catch a lot of innocent users
- # now that we're so big.
- # burst_shared:
- # interval: 10
- # max: 20
-
- chars:
- interval: 5
- max: 4_200
-
- discord_emojis:
- interval: 10
- max: 20
-
- duplicates:
- interval: 10
- max: 3
-
- links:
- interval: 10
- max: 10
-
- mentions:
- interval: 10
- max: 5
-
- newlines:
- interval: 10
- max: 100
- max_consecutive: 10
-
- role_mentions:
- interval: 10
- max: 3
-
-
-metabase:
- username: !ENV "METABASE_USERNAME"
- password: !ENV "METABASE_PASSWORD"
- base_url: "http://metabase.default.svc.cluster.local"
- public_url: "https://metabase.pythondiscord.com"
- # 14 days, see https://www.metabase.com/docs/latest/operations-guide/environment-variables.html#max_session_age
- max_session_age: 20160
-
-
-big_brother:
- header_message_limit: 15
- log_delay: 15
-
-
-code_block:
- # The channels in which code blocks will be detected. They are not subject to a cooldown.
- channel_whitelist:
- - *BOT_CMD
-
- # The channels which will be affected by a cooldown. These channels are also whitelisted.
- cooldown_channels:
- - *PY_GENERAL
-
- # Sending instructions triggers a cooldown on a per-channel basis.
- # More instruction messages will not be sent in the same channel until the cooldown has elapsed.
- cooldown_seconds: 300
-
- # The minimum amount of lines a message or code block must have for instructions to be sent.
- minimum_lines: 4
-
-
-free:
- # Seconds to elapse for a channel
- # to be considered inactive.
- activity_timeout: 600
- cooldown_per: 60.0
- cooldown_rate: 1
-
-
-help_channels:
- enable: true
-
- # Allowed duration of inactivity before archiving a help post
- idle_minutes: 30
-
- # Allowed duration of inactivity when post is empty (due to deleted messages)
- # before archiving a help post
- deleted_idle_minutes: 5
-
- # Roles which are allowed to use the command which makes channels dormant
- cmd_whitelist:
- - *HELPERS_ROLE
-
-redirect_output:
- delete_delay: 15
- delete_invocation: true
-
-
-duck_pond:
- threshold: 7
- channel_blacklist:
- - *ANNOUNCEMENTS
- - *PYNEWS_CHANNEL
- - *PYEVENTS_CHANNEL
- - *MAILING_LISTS
- - *REDDIT_CHANNEL
- - *DUCK_POND
- - *CHANGE_LOG
- - *STAFF_ANNOUNCEMENTS
- - *MOD_ANNOUNCEMENTS
- - *ADMIN_ANNOUNCEMENTS
- - *STAFF_INFO
-
-
-python_news:
- channel: *PYNEWS_CHANNEL
- webhook: *PYNEWS_WEBHOOK
-
- mail_lists:
- - 'python-ideas'
- - 'python-announce-list'
- - 'pypi-announce'
- - 'python-dev'
-
-
-voice_gate:
- bot_message_delete_delay: 10 # Seconds before deleting bot's response in Voice Gate
- minimum_activity_blocks: 3 # Number of 10 minute blocks during which a user must have been active
- minimum_days_member: 3 # How many days the user must have been a member for
- minimum_messages: 50 # How many messages a user must have to be eligible for voice
- voice_ping_delete_delay: 60 # Seconds before deleting the bot's ping to user in Voice Gate
-
-
-branding:
- cycle_frequency: 3 # How many days bot wait before refreshing server icon
-
-
-config:
- required_keys: ['bot.token']
-
-
-video_permission:
- default_permission_duration: 5 # Default duration for stream command in minutes