aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/constants.py209
-rw-r--r--config-default.yml182
2 files changed, 201 insertions, 190 deletions
diff --git a/bot/constants.py b/bot/constants.py
index 2f5cf0e8a..95e22513f 100644
--- a/bot/constants.py
+++ b/bot/constants.py
@@ -13,7 +13,7 @@ their default values from `config-default.yml`.
import logging
import os
from collections.abc import Mapping
-from enum import Enum, IntEnum
+from enum import Enum
from pathlib import Path
from typing import Dict, List, Optional
@@ -197,8 +197,8 @@ class Bot(metaclass=YAMLGetter):
section = "bot"
prefix: str
- token: str
sentry_dsn: Optional[str]
+ token: str
class Redis(metaclass=YAMLGetter):
@@ -206,29 +206,30 @@ class Redis(metaclass=YAMLGetter):
subsection = "redis"
host: str
- port: int
password: Optional[str]
+ port: int
use_fakeredis: bool # If this is True, Bot will use fakeredis.aioredis
class Filter(metaclass=YAMLGetter):
section = "filter"
- filter_zalgo: bool
- filter_invites: bool
filter_domains: bool
filter_everyone_ping: bool
+ filter_invites: bool
+ filter_zalgo: bool
watch_regex: bool
watch_rich_embeds: bool
# Notifications are not expected for "watchlist" type filters
- notify_user_zalgo: bool
- notify_user_invites: bool
+
notify_user_domains: bool
notify_user_everyone_ping: bool
+ notify_user_invites: bool
+ notify_user_zalgo: bool
- ping_everyone: bool
offensive_msg_delete_days: int
+ ping_everyone: bool
channel_whitelist: List[int]
role_whitelist: List[int]
@@ -245,10 +246,10 @@ class Colours(metaclass=YAMLGetter):
section = "style"
subsection = "colours"
- soft_red: int
+ bright_green: int
soft_green: int
soft_orange: int
- bright_green: int
+ soft_red: int
orange: int
pink: int
purple: int
@@ -265,41 +266,42 @@ class Emojis(metaclass=YAMLGetter):
section = "style"
subsection = "emojis"
- defcon_disabled: str # noqa: E704
- defcon_enabled: str # noqa: E704
- defcon_updated: str # noqa: E704
-
- status_online: str
- status_offline: str
- status_idle: str
- status_dnd: str
-
- badge_staff: str
- badge_partner: str
- badge_hypesquad: str
badge_bug_hunter: str
+ badge_bug_hunter_level_2: str
+ badge_early_supporter: str
+ badge_hypesquad: str
+ badge_hypesquad_balance: str
badge_hypesquad_bravery: str
badge_hypesquad_brilliance: str
- badge_hypesquad_balance: str
- badge_early_supporter: str
- badge_bug_hunter_level_2: str
+ badge_partner: str
+ badge_staff: str
badge_verified_bot_developer: str
+ defcon_disabled: str # noqa: E704
+ defcon_enabled: str # noqa: E704
+ defcon_updated: str # noqa: E704
+
+ failmail: str
+
incident_actioned: str
- incident_unactioned: str
incident_investigating: str
+ incident_unactioned: str
+
+ status_dnd: str
+ status_idle: str
+ status_offline: str
+ status_online: str
- failmail: str
trashcan: str
bullet: str
+ check_mark: str
+ cross_mark: str
new: str
pencil: str
- cross_mark: str
- check_mark: str
- upvotes: str
comments: str
+ upvotes: str
user: str
ok_hand: str
@@ -320,6 +322,7 @@ class Icons(metaclass=YAMLGetter):
filtering: str
+ green_checkmark: str
guild_update: str
hash_blurple: str
@@ -330,38 +333,34 @@ class Icons(metaclass=YAMLGetter):
message_delete: str
message_edit: str
+ pencil: str
+
+ questionmark: str
+
+ remind_blurple: str
+ remind_green: str
+ remind_red: str
+
sign_in: str
sign_out: str
+ superstarify: str
+ unsuperstarify: str
+
token_removed: str
user_ban: str
- user_unban: str
- user_update: str
-
user_mute: str
+ user_unban: str
user_unmute: str
+ user_update: str
user_verified: str
-
user_warn: str
- pencil: str
-
- remind_blurple: str
- remind_green: str
- remind_red: str
-
- questionmark: str
-
- superstarify: str
- unsuperstarify: str
-
voice_state_blue: str
voice_state_green: str
voice_state_red: str
- green_checkmark: str
-
class CleanMessages(metaclass=YAMLGetter):
section = "bot"
@@ -383,8 +382,8 @@ class Categories(metaclass=YAMLGetter):
subsection = "categories"
help_available: int
- help_in_use: int
help_dormant: int
+ help_in_use: int
modmail: int
voice: int
@@ -393,56 +392,67 @@ class Channels(metaclass=YAMLGetter):
section = "guild"
subsection = "channels"
- admin_announcements: int
- admin_spam: int
- admins: int
- admins_voice: int
announcements: int
- attachment_log: int
- big_brother_logs: int
- bot_commands: int
change_log: int
- code_help_chat_1: int
- code_help_chat_2: int
- code_help_voice_1: int
- code_help_voice_2: int
- cooldown: int
- defcon: int
- discord_py: int
+ mailing_lists: int
+ python_events: int
+ python_news: int
+ reddit: int
+ user_event_announcements: int
+
dev_contrib: int
dev_core: int
dev_log: int
+
+ meta: int
+ python_general: int
+
+ cooldown: int
+
+ attachment_log: int
dm_log: int
+ message_log: int
+ mod_log: int
+ user_log: int
+ voice_log: int
+
+ off_topic_0: int
+ off_topic_1: int
+ off_topic_2: int
+
+ bot_commands: int
+ discord_py: int
esoteric: int
- general_voice: int
+ voice_gate: int
+
+ admins: int
+ admin_spam: int
+ defcon: int
helpers: int
incidents: int
incidents_archive: int
- mailing_lists: int
- message_log: int
- meta: int
+ mods: int
mod_alerts: int
- mod_announcements: int
- mod_log: int
mod_spam: int
- mods: int
- off_topic_0: int
- off_topic_1: int
- off_topic_2: int
organisation: int
- python_general: int
- python_events: int
- python_news: int
- reddit: int
+
+ admin_announcements: int
+ mod_announcements: int
staff_announcements: int
+
+ admins_voice: int
+ code_help_voice_1: int
+ code_help_voice_2: int
+ general_voice: int
staff_voice: int
+
+ code_help_chat_1: int
+ code_help_chat_2: int
staff_voice_chat: int
- talent_pool: int
- user_event_announcements: int
- user_log: int
voice_chat: int
- voice_gate: int
- voice_log: int
+
+ big_brother_logs: int
+ talent_pool: int
class Webhooks(metaclass=YAMLGetter):
@@ -462,41 +472,44 @@ class Roles(metaclass=YAMLGetter):
section = "guild"
subsection = "roles"
- admins: int
announcements: int
contributors: int
- core_developers: int
help_cooldown: int
- helpers: int
- jammers: int
- moderators: int
muted: int
- owners: int
partners: int
python_community: int
sprinters: int
- team_leaders: int
voice_verified: int
+ admins: int
+ core_developers: int
+ helpers: int
+ moderators: int
+ owners: int
+
+ jammers: int
+ team_leaders: int
+
class Guild(metaclass=YAMLGetter):
section = "guild"
id: int
invite: str # Discord invite, gets embedded in chat
- moderation_channels: List[int]
+
moderation_categories: List[int]
- moderation_roles: List[int]
+ moderation_channels: List[int]
modlog_blacklist: List[int]
reminder_whitelist: List[int]
+ moderation_roles: List[int]
staff_roles: List[int]
class Keys(metaclass=YAMLGetter):
section = "keys"
- site_api: Optional[str]
github: Optional[str]
+ site_api: Optional[str]
class URLs(metaclass=YAMLGetter):
@@ -526,9 +539,9 @@ class URLs(metaclass=YAMLGetter):
class Reddit(metaclass=YAMLGetter):
section = "reddit"
- subreddits: list
client_id: Optional[str]
secret: Optional[str]
+ subreddits: list
class AntiSpam(metaclass=YAMLGetter):
@@ -544,8 +557,8 @@ class AntiSpam(metaclass=YAMLGetter):
class BigBrother(metaclass=YAMLGetter):
section = 'big_brother'
- log_delay: int
header_message_limit: int
+ log_delay: int
class CodeBlock(metaclass=YAMLGetter):
@@ -561,8 +574,8 @@ class Free(metaclass=YAMLGetter):
section = 'free'
activity_timeout: int
- cooldown_rate: int
cooldown_per: float
+ cooldown_rate: int
class HelpChannels(metaclass=YAMLGetter):
@@ -585,25 +598,25 @@ class HelpChannels(metaclass=YAMLGetter):
class RedirectOutput(metaclass=YAMLGetter):
section = 'redirect_output'
- delete_invocation: bool
delete_delay: int
+ delete_invocation: bool
class PythonNews(metaclass=YAMLGetter):
section = 'python_news'
- mail_lists: List[str]
channel: int
webhook: int
+ mail_lists: List[str]
class VoiceGate(metaclass=YAMLGetter):
section = "voice_gate"
- minimum_days_member: int
- minimum_messages: int
bot_message_delete_delay: int
minimum_activity_blocks: int
+ minimum_days_member: int
+ minimum_messages: int
voice_ping_delete_delay: int
diff --git a/config-default.yml b/config-default.yml
index 6695cffed..d3b267159 100644
--- a/config-default.yml
+++ b/config-default.yml
@@ -1,74 +1,75 @@
bot:
prefix: "!"
- token: !ENV "BOT_TOKEN"
sentry_dsn: !ENV "BOT_SENTRY_DSN"
+ token: !ENV "BOT_TOKEN"
+
+ 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"
- port: 6379
password: !ENV "REDIS_PASSWORD"
+ port: 6379
use_fakeredis: false
stats:
- statsd_host: "graphite.default.svc.cluster.local"
presence_update_timeout: 300
-
- cooldowns:
- # Per channel, per tag.
- tags: 60
-
- clean:
- # Maximum number of messages to traverse for clean commands
- message_limit: 10000
+ statsd_host: "graphite.default.svc.cluster.local"
style:
colours:
- soft_red: 0xcd6d6d
+ bright_green: 0x01d277
soft_green: 0x68c290
soft_orange: 0xf9cb54
- bright_green: 0x01d277
+ soft_red: 0xcd6d6d
orange: 0xe67e22
pink: 0xcf84e0
purple: 0xb734eb
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_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_hypesquad_balance: "<:hypesquad_balance:743882896460480625>"
- badge_early_supporter: "<:early_supporter:743882896909140058>"
- badge_bug_hunter_level_2: "<:bug_hunter_lvl2:743882896611344505>"
+ badge_partner: "<:partner:748666453242413136>"
+ badge_staff: "<:discord_staff:743882896498098226>"
badge_verified_bot_developer: "<:verified_bot_dev:743882897299210310>"
- incident_actioned: "<:incident_actioned:719645530128646266>"
- incident_unactioned: "<:incident_unactioned:719645583245180960>"
- incident_investigating: "<:incident_investigating:719645658671480924>"
+ defcon_disabled: "<:defcondisabled:470326273952972810>"
+ defcon_enabled: "<:defconenabled:470326274213150730>"
+ defcon_updated: "<:defconsettingsupdated:470326274082996224>"
failmail: "<:failmail:633660039931887616>"
+
+ incident_actioned: "<:incident_actioned:719645530128646266>"
+ incident_investigating: "<:incident_investigating:719645658671480924>"
+ incident_unactioned: "<:incident_unactioned:719645583245180960>"
+
+ status_dnd: "<:status_dnd:470326272082313216>"
+ status_idle: "<:status_idle:470326266625785866>"
+ status_offline: "<:status_offline:470326266537705472>"
+ status_online: "<:status_online:470326272351010816>"
+
trashcan: "<:trashcan:637136429717389331>"
bullet: "\u2022"
- pencil: "\u270F"
- new: "\U0001F195"
- cross_mark: "\u274C"
check_mark: "\u2705"
+ cross_mark: "\u274C"
+ new: "\U0001F195"
+ pencil: "\u270F"
# emotes used for #reddit
- upvotes: "<:reddit_upvotes:755845219890757644>"
comments: "<:reddit_comments:755845255001014384>"
+ upvotes: "<:reddit_upvotes:755845219890757644>"
user: "<:reddit_users:755845303822974997>"
ok_hand: ":ok_hand:"
@@ -85,6 +86,7 @@ style:
filtering: "https://cdn.discordapp.com/emojis/472472638594482195.png"
+ green_checkmark: "https://raw.githubusercontent.com/python-discord/branding/master/icons/checkmark/green-checkmark-dist.png"
guild_update: "https://cdn.discordapp.com/emojis/469954765141442561.png"
hash_blurple: "https://cdn.discordapp.com/emojis/469950142942806017.png"
@@ -95,38 +97,34 @@ style:
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_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_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"
- 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"
- green_checkmark: "https://raw.githubusercontent.com/python-discord/branding/master/icons/checkmark/green-checkmark-dist.png"
-
guild:
id: 267624335836053506
@@ -134,19 +132,19 @@ guild:
categories:
help_available: 691405807388196926
- help_in_use: 696958401460043776
help_dormant: 691405908919451718
- modmail: &MODMAIL 714494672835444826
+ help_in_use: 696958401460043776
logs: &LOGS 468520609152892958
+ modmail: &MODMAIL 714494672835444826
voice: 356013253765234688
channels:
# Public announcement and news channels
- change_log: &CHANGE_LOG 748238795236704388
announcements: &ANNOUNCEMENTS 354619224620138496
- python_news: &PYNEWS_CHANNEL 704372456592506880
- python_events: &PYEVENTS_CHANNEL 729674110270963822
+ change_log: &CHANGE_LOG 748238795236704388
mailing_lists: &MAILING_LISTS 704372456592506880
+ python_events: &PYEVENTS_CHANNEL 729674110270963822
+ python_news: &PYNEWS_CHANNEL 704372456592506880
reddit: &REDDIT_CHANNEL 458224812528238616
user_event_announcements: &USER_EVENT_A 592000283102674944
@@ -167,11 +165,11 @@ guild:
# Logs
attachment_log: &ATTACH_LOG 649243850006855680
+ dm_log: 653713721625018428
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
@@ -187,22 +185,22 @@ guild:
admins: &ADMINS 365960823622991872
admin_spam: &ADMIN_SPAM 563594791770914816
defcon: &DEFCON 464469101889454091
+ duck_pond: &DUCK_POND 637820308341915648
helpers: &HELPERS 385474242440986624
incidents: 714214212200562749
incidents_archive: 720668923636351037
mods: &MODS 305126844661760000
mod_alerts: 473092532147060736
+ mod_meta: &MOD_META 775412552795947058
mod_spam: &MOD_SPAM 620607373828030464
mod_tools: &MOD_TOOLS 775413915391098921
- mod_meta: &MOD_META 775412552795947058
organisation: &ORGANISATION 551789653284356126
staff_lounge: &STAFF_LOUNGE 464905259261755392
- duck_pond: &DUCK_POND 637820308341915648
# Staff announcement channels
- staff_announcements: &STAFF_ANNOUNCEMENTS 464033278631084042
- mod_announcements: &MOD_ANNOUNCEMENTS 372115205867700225
admin_announcements: &ADMIN_ANNOUNCEMENTS 749736155569848370
+ mod_announcements: &MOD_ANNOUNCEMENTS 372115205867700225
+ staff_announcements: &STAFF_ANNOUNCEMENTS 464033278631084042
# Voice Channels
admins_voice: &ADMINS_VOICE 500734494840717332
@@ -254,7 +252,6 @@ guild:
partners: 323426753857191936
python_community: &PY_COMMUNITY_ROLE 458226413825294336
sprinters: &SPRINTERS 758422482289426471
-
voice_verified: 764802720779337729
# Staff
@@ -269,15 +266,15 @@ guild:
team_leaders: 737250302834638889
moderation_roles:
- - *OWNERS_ROLE
- *ADMINS_ROLE
- *MODS_ROLE
+ - *OWNERS_ROLE
staff_roles:
- - *OWNERS_ROLE
- *ADMINS_ROLE
- - *MODS_ROLE
- *HELPERS_ROLE
+ - *MODS_ROLE
+ - *OWNERS_ROLE
webhooks:
big_brother: 569133704568373283
@@ -292,47 +289,47 @@ guild:
filter:
# What do we filter?
- filter_zalgo: false
- filter_invites: true
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_zalgo: false
- notify_user_invites: true
notify_user_domains: false
notify_user_everyone_ping: true
+ notify_user_invites: true
+ notify_user_zalgo: false
# Filter configuration
- ping_everyone: true
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
- - *MOD_LOG
- - *MESSAGE_LOG
- - *DEV_LOG
- *BB_LOGS
+ - *DEV_LOG
+ - *MESSAGE_LOG
+ - *MOD_LOG
- *STAFF_LOUNGE
- *TALENT_POOL
- *USER_EVENT_A
role_whitelist:
- *ADMINS_ROLE
+ - *HELPERS_ROLE
- *MODS_ROLE
- *OWNERS_ROLE
- - *HELPERS_ROLE
- *PY_COMMUNITY_ROLE
- *SPRINTERS
keys:
- site_api: !ENV "BOT_API_KEY"
github: !ENV "GITHUB_API_KEY"
+ site_api: !ENV "BOT_API_KEY"
urls:
@@ -340,11 +337,11 @@ urls:
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_staff: &STAFF !JOIN ["staff.", *DOMAIN]
- site_logs_view: !JOIN [*SCHEMA, *STAFF, "/bot/logs"]
paste_service: !JOIN [*SCHEMA, *PASTE, "/{key}"]
+ site_logs_view: !JOIN [*SCHEMA, *STAFF, "/bot/logs"]
# Snekbox
snekbox_eval_api: "http://snekbox.default.svc.cluster.local/eval"
@@ -364,8 +361,8 @@ anti_spam:
ping_everyone: true
punishment:
- role_id: *MUTED_ROLE
remove_after: 600
+ role_id: *MUTED_ROLE
rules:
attachments:
@@ -388,14 +385,14 @@ anti_spam:
interval: 5
max: 3_000
- duplicates:
- interval: 10
- max: 3
-
discord_emojis:
interval: 10
max: 20
+ duplicates:
+ interval: 10
+ max: 3
+
links:
interval: 10
max: 10
@@ -415,15 +412,15 @@ anti_spam:
reddit:
+ client_id: !ENV "REDDIT_CLIENT_ID"
+ secret: !ENV "REDDIT_SECRET"
subreddits:
- 'r/Python'
- client_id: !ENV "REDDIT_CLIENT_ID"
- secret: !ENV "REDDIT_SECRET"
big_brother:
- log_delay: 15
header_message_limit: 15
+ log_delay: 15
code_block:
@@ -447,8 +444,8 @@ free:
# Seconds to elapse for a channel
# to be considered inactive.
activity_timeout: 600
- cooldown_rate: 1
cooldown_per: 60.0
+ cooldown_rate: 1
help_channels:
@@ -493,8 +490,8 @@ help_channels:
redirect_output:
- delete_invocation: true
delete_delay: 15
+ delete_invocation: true
duck_pond:
@@ -514,20 +511,21 @@ duck_pond:
python_news:
+ channel: *PYNEWS_CHANNEL
+ webhook: *PYNEWS_WEBHOOK
+
mail_lists:
- 'python-ideas'
- 'python-announce-list'
- 'pypi-announce'
- 'python-dev'
- channel: *PYNEWS_CHANNEL
- webhook: *PYNEWS_WEBHOOK
voice_gate:
- 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
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