bot: prefix: "!" token: !ENV "BOT_TOKEN" sentry_dsn: !ENV "BOT_SENTRY_DSN" redis: host: "redis" port: 6379 password: !ENV "REDIS_PASSWORD" use_fakeredis: false stats: statsd_host: "graphite" presence_update_timeout: 300 cooldowns: # Per channel, per tag. tags: 60 clean: # Maximum number of messages to traverse for clean commands message_limit: 10000 style: colours: soft_red: 0xcd6d6d soft_green: 0x68c290 soft_orange: 0xf9cb54 emojis: defcon_disabled: "<:defcondisabled:470326273952972810>" defcon_enabled: "<:defconenabled:470326274213150730>" defcon_updated: "<:defconsettingsupdated:470326274082996224>" status_online: "<:status_online:470326272351010816>" status_idle: "<:status_idle:470326266625785866>" status_dnd: "<:status_dnd:470326272082313216>" status_offline: "<:status_offline:470326266537705472>" badge_staff: "<:discord_staff:743882896498098226>" badge_partner: "<:partner:748666453242413136>" badge_hypesquad: "<:hypesquad_events:743882896892362873>" badge_bug_hunter: "<:bug_hunter_lvl1:743882896372269137>" badge_hypesquad_bravery: "<:hypesquad_bravery:743882896745693335>" badge_hypesquad_brilliance: "<:hypesquad_brilliance:743882896938631248>" badge_hypesquad_balance: "<:hypesquad_balance:743882896460480625>" badge_early_supporter: "<:early_supporter:743882896909140058>" badge_bug_hunter_level_2: "<:bug_hunter_lvl2:743882896611344505>" badge_verified_bot_developer: "<:verified_bot_dev:743882897299210310>" incident_actioned: "<:incident_actioned:719645530128646266>" incident_unactioned: "<:incident_unactioned:719645583245180960>" incident_investigating: "<:incident_investigating:719645658671480924>" failmail: "<:failmail:633660039931887616>" trashcan: "<:trashcan:637136429717389331>" bullet: "\u2022" pencil: "\u270F" new: "\U0001F195" cross_mark: "\u274C" check_mark: "\u2705" ducky_yellow: &DUCKY_YELLOW 574951975574175744 ducky_blurple: &DUCKY_BLURPLE 574951975310065675 ducky_regal: &DUCKY_REGAL 637883439185395712 ducky_camo: &DUCKY_CAMO 637914731566596096 ducky_ninja: &DUCKY_NINJA 637923502535606293 ducky_devil: &DUCKY_DEVIL 637925314982576139 ducky_tube: &DUCKY_TUBE 637881368008851456 ducky_hunt: &DUCKY_HUNT 639355090909528084 ducky_wizard: &DUCKY_WIZARD 639355996954689536 ducky_party: &DUCKY_PARTY 639468753440210977 ducky_angel: &DUCKY_ANGEL 640121935610511361 ducky_maul: &DUCKY_MAUL 640137724958867467 ducky_santa: &DUCKY_SANTA 655360331002019870 upvotes: "<:upvotes:638729835245731840>" comments: "<:comments:638729835073765387>" user: "<:user:638729835442602003>" 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_disabled: "https://cdn.discordapp.com/emojis/470326273952972810.png" defcon_enabled: "https://cdn.discordapp.com/emojis/470326274213150730.png" defcon_updated: "https://cdn.discordapp.com/emojis/472472638342561793.png" filtering: "https://cdn.discordapp.com/emojis/472472638594482195.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" sign_in: "https://cdn.discordapp.com/emojis/469952898181234698.png" sign_out: "https://cdn.discordapp.com/emojis/469952898089091082.png" token_removed: "https://cdn.discordapp.com/emojis/470326273298792469.png" user_ban: "https://cdn.discordapp.com/emojis/469952898026045441.png" user_unban: "https://cdn.discordapp.com/emojis/469952898692808704.png" user_update: "https://cdn.discordapp.com/emojis/469952898684551168.png" user_mute: "https://cdn.discordapp.com/emojis/472472640100106250.png" user_unmute: "https://cdn.discordapp.com/emojis/472472639206719508.png" user_verified: "https://cdn.discordapp.com/emojis/470326274519334936.png" user_warn: "https://cdn.discordapp.com/emojis/470326274238447633.png" pencil: "https://cdn.discordapp.com/emojis/470326272401211415.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" questionmark: "https://cdn.discordapp.com/emojis/512367613339369475.png" superstarify: "https://cdn.discordapp.com/emojis/636288153044516874.png" unsuperstarify: "https://cdn.discordapp.com/emojis/636288201258172446.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: help_available: 691405807388196926 help_in_use: 696958401460043776 help_dormant: 691405908919451718 modmail: 714494672835444826 channels: announcements: 354619224620138496 user_event_announcements: &USER_EVENT_A 592000283102674944 python_news: &PYNEWS_CHANNEL 704372456592506880 # Development dev_contrib: &DEV_CONTRIB 635950537262759947 dev_core: &DEV_CORE 411200599653351425 dev_log: &DEV_LOG 622895325144940554 # Discussion meta: 429409067623251969 python_discussion: 267624335836053506 # Python Help: Available how_to_get_help: 704250143020417084 cooldown: 720603994149486673 # Logs attachment_log: &ATTACH_LOG 649243850006855680 message_log: &MESSAGE_LOG 467752170159079424 mod_log: &MOD_LOG 282638479504965634 user_log: 528976905546760203 voice_log: 640292421988646961 dm_log: 653713721625018428 # Off-topic off_topic_0: 291284109232308226 off_topic_1: 463035241142026251 off_topic_2: 463035268514185226 # Special bot_commands: &BOT_CMD 267659945086812160 esoteric: 470884583684964352 reddit: 458224812528238616 verification: 352442727016693763 # Staff admins: &ADMINS 365960823622991872 admin_spam: &ADMIN_SPAM 563594791770914816 defcon: &DEFCON 464469101889454091 helpers: &HELPERS 385474242440986624 incidents: 714214212200562749 incidents_archive: 720668923636351037 mods: &MODS 305126844661760000 mod_alerts: &MOD_ALERTS 473092532147060736 mod_spam: &MOD_SPAM 620607373828030464 organisation: &ORGANISATION 551789653284356126 staff_lounge: &STAFF_LOUNGE 464905259261755392 # Voice admins_voice: &ADMINS_VOICE 500734494840717332 staff_voice: &STAFF_VOICE 412375055910043655 # Watch big_brother_logs: &BB_LOGS 468507907357409333 talent_pool: &TALENT_POOL 534321732593647616 staff_channels: - *ADMINS - *ADMIN_SPAM - *DEFCON - *HELPERS - *MODS - *MOD_SPAM - *ORGANISATION moderation_channels: - *ADMINS - *ADMIN_SPAM - *MOD_ALERTS - *MODS - *MOD_SPAM # Modlog cog ignores events which occur in these channels modlog_blacklist: - *ADMINS - *ADMINS_VOICE - *ATTACH_LOG - *MESSAGE_LOG - *MOD_LOG - *STAFF_VOICE reminder_whitelist: - *BOT_CMD - *DEV_CONTRIB roles: announcements: 463658397560995840 contributors: 295488872404484098 help_cooldown: 699189276025421825 muted: &MUTED_ROLE 277914926603829249 partners: 323426753857191936 python_community: &PY_COMMUNITY_ROLE 458226413825294336 unverified: 739794855945044069 verified: 352427296948486144 # @Developers on PyDis # Staff admins: &ADMINS_ROLE 267628507062992896 core_developers: 587606783669829632 helpers: &HELPERS_ROLE 267630620367257601 moderators: &MODS_ROLE 267629731250176001 owners: &OWNERS_ROLE 267627879762755584 # Code Jam jammers: 737249140966162473 team_leaders: 737250302834638889 moderation_roles: - *OWNERS_ROLE - *ADMINS_ROLE - *MODS_ROLE staff_roles: - *OWNERS_ROLE - *ADMINS_ROLE - *MODS_ROLE - *HELPERS_ROLE webhooks: big_brother: 569133704568373283 dev_log: 680501655111729222 dm_log: 654567640664244225 duck_pond: 637821475327311927 incidents_archive: 720671599790915702 python_news: &PYNEWS_WEBHOOK 704381182279942324 reddit: 635408384794951680 talent_pool: 569145364800602132 filter: # What do we filter? filter_zalgo: false filter_invites: true filter_domains: true watch_regex: true watch_rich_embeds: true # Notify user on filter? # Notifications are not expected for "watchlist" type filters notify_user_zalgo: false notify_user_invites: true notify_user_domains: false # Filter configuration ping_everyone: true offensive_msg_delete_days: 7 # How many days before deleting an offensive message? # Censor doesn't apply to these channel_whitelist: - *ADMINS - *MOD_LOG - *MESSAGE_LOG - *DEV_LOG - *BB_LOGS - *STAFF_LOUNGE - *TALENT_POOL - *USER_EVENT_A role_whitelist: - *ADMINS_ROLE - *MODS_ROLE - *OWNERS_ROLE - *HELPERS_ROLE - *PY_COMMUNITY_ROLE keys: site_api: !ENV "BOT_API_KEY" urls: # PyDis site vars site: &DOMAIN "pythondiscord.com" site_api: &API !JOIN ["api.", *DOMAIN] site_paste: &PASTE !JOIN ["paste.", *DOMAIN] site_staff: &STAFF !JOIN ["staff.", *DOMAIN] site_schema: &SCHEMA "https://" site_logs_view: !JOIN [*SCHEMA, *STAFF, "/bot/logs"] paste_service: !JOIN [*SCHEMA, *PASTE, "/{key}"] # Snekbox snekbox_eval_api: "http://snekbox:8060/eval" # Discord API URLs discord_api: &DISCORD_API "https://discordapp.com/api/v7/" discord_invite_api: !JOIN [*DISCORD_API, "invites"] # Misc URLs bot_avatar: "https://raw.githubusercontent.com/discord-python/branding/master/logos/logo_circle/logo_circle.png" github_bot_repo: "https://github.com/python-discord/bot" anti_spam: # Clean messages that violate a rule. clean_offending: true ping_everyone: true punishment: role_id: *MUTED_ROLE remove_after: 600 rules: attachments: interval: 10 max: 9 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: 3_000 duplicates: interval: 10 max: 3 discord_emojis: interval: 10 max: 20 links: interval: 10 max: 10 mentions: interval: 10 max: 5 newlines: interval: 10 max: 100 max_consecutive: 10 role_mentions: interval: 10 max: 3 # The everyone ping filter is temporarily disabled # until we've fixed a couple of bugs. # everyone_ping: # interval: 10 # max: 0 reddit: subreddits: - 'r/Python' client_id: !ENV "REDDIT_CLIENT_ID" secret: !ENV "REDDIT_SECRET" big_brother: log_delay: 15 header_message_limit: 15 free: # Seconds to elapse for a channel # to be considered inactive. activity_timeout: 600 cooldown_rate: 1 cooldown_per: 60.0 help_channels: enable: true # Minimum interval before allowing a certain user to claim a new help channel claim_minutes: 15 # 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: 30 # Allowed duration of inactivity when channel is empty (due to deleted messages) # before message making a channel dormant deleted_idle_minutes: 5 # 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: 32 # 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: *HELPERS # Minimum interval between helper notifications notify_minutes: 15 # Mention these roles in notifications notify_roles: - *HELPERS_ROLE redirect_output: delete_invocation: true delete_delay: 15 sync: confirm_timeout: 300 max_diff: 10 duck_pond: threshold: 5 custom_emojis: - *DUCKY_YELLOW - *DUCKY_BLURPLE - *DUCKY_CAMO - *DUCKY_DEVIL - *DUCKY_NINJA - *DUCKY_REGAL - *DUCKY_TUBE - *DUCKY_HUNT - *DUCKY_WIZARD - *DUCKY_PARTY - *DUCKY_ANGEL - *DUCKY_MAUL - *DUCKY_SANTA python_news: mail_lists: - 'python-ideas' - 'python-announce-list' - 'pypi-announce' channel: *PYNEWS_CHANNEL webhook: *PYNEWS_WEBHOOK verification: unverified_after: 3 # Days after which non-Developers receive the @Unverified role kicked_after: 30 # Days after which non-Developers get kicked from the guild reminder_frequency: 28 # Hours between @Unverified pings bot_message_delete_delay: 10 # Seconds before deleting bots response in #verification # Number in range [0, 1] determining the percentage of unverified users that are safe # to be kicked from the guild in one batch, any larger amount will require staff confirmation, # set this to 0 to require explicit approval for batches of any size kick_confirmation_threshold: 0.01 # 1% config: required_keys: ['bot.token']