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>" failed_file: "<:failed_file:1073298441968562226>" 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