diff options
| author | 2020-12-08 16:05:59 -0500 | |
|---|---|---|
| committer | 2020-12-08 16:05:59 -0500 | |
| commit | dd8249aa027402107087cc1cc96c15d988d81dbf (patch) | |
| tree | 605703c44487c5d39dba27090158bd0bd8b17699 | |
| parent | Merge branch 'master' into Stelercus/close_command (diff) | |
| parent | Update CODEOWNERS for @Den4200 (diff) | |
Merge branch 'master' into Stelercus/close_command
Diffstat (limited to '')
| -rw-r--r-- | .github/CODEOWNERS | 13 | ||||
| -rw-r--r-- | .github/review-policy.yml | 3 | ||||
| -rw-r--r-- | bot/bot.py | 29 | ||||
| -rw-r--r-- | bot/exts/moderation/infraction/management.py | 2 | 
4 files changed, 36 insertions, 11 deletions
| diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 642676078..73e303325 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,3 @@ -# Request Dennis for any PR -* @Den4200 -  # Extensions  **/bot/exts/backend/sync/**             @MarkKoz  **/bot/exts/filters/*token_remover.py   @MarkKoz @@ -9,8 +6,8 @@ bot/exts/info/codeblock/**              @MarkKoz  bot/exts/utils/extensions.py            @MarkKoz  bot/exts/utils/snekbox.py               @MarkKoz @Akarys42  bot/exts/help_channels/**               @MarkKoz @Akarys42 -bot/exts/moderation/**                  @Akarys42 @mbaruh -bot/exts/info/**                        @Akarys42 @mbaruh +bot/exts/moderation/**                  @Akarys42 @mbaruh @Den4200 +bot/exts/info/**                        @Akarys42 @mbaruh @Den4200  bot/exts/filters/**                     @mbaruh  # Utils @@ -26,9 +23,9 @@ tests/bot/exts/test_cogs.py             @MarkKoz  tests/**                                @Akarys42  # CI & Docker -.github/workflows/**                    @MarkKoz @Akarys42 @SebastiaanZ -Dockerfile                              @MarkKoz @Akarys42 -docker-compose.yml                      @MarkKoz @Akarys42 +.github/workflows/**                    @MarkKoz @Akarys42 @SebastiaanZ @Den4200 +Dockerfile                              @MarkKoz @Akarys42 @Den4200 +docker-compose.yml                      @MarkKoz @Akarys42 @Den4200  # Tools  Pipfile*                                @Akarys42 diff --git a/.github/review-policy.yml b/.github/review-policy.yml new file mode 100644 index 000000000..421b30f8a --- /dev/null +++ b/.github/review-policy.yml @@ -0,0 +1,3 @@ +remote: python-discord/.github +path: review-policies/core-developers.yml +ref: main diff --git a/bot/bot.py b/bot/bot.py index 36cf7d30a..f71f5d1fb 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -15,6 +15,7 @@ from bot import api, constants  from bot.async_stats import AsyncStatsClient  log = logging.getLogger('bot') +LOCALHOST = "127.0.0.1"  class Bot(commands.Bot): @@ -36,6 +37,7 @@ class Bot(commands.Bot):          self._connector = None          self._resolver = None +        self._statsd_timerhandle: asyncio.TimerHandle = None          self._guild_available = asyncio.Event()          statsd_url = constants.Stats.statsd_host @@ -44,9 +46,29 @@ class Bot(commands.Bot):              # Since statsd is UDP, there are no errors for sending to a down port.              # For this reason, setting the statsd host to 127.0.0.1 for development              # will effectively disable stats. -            statsd_url = "127.0.0.1" +            statsd_url = LOCALHOST -        self.stats = AsyncStatsClient(self.loop, statsd_url, 8125, prefix="bot") +        self.stats = AsyncStatsClient(self.loop, LOCALHOST) +        self._connect_statsd(statsd_url) + +    def _connect_statsd(self, statsd_url: str, retry_after: int = 2, attempt: int = 1) -> None: +        """Callback used to retry a connection to statsd if it should fail.""" +        if attempt >= 8: +            log.error("Reached 8 attempts trying to reconnect AsyncStatsClient. Aborting") +            return + +        try: +            self.stats = AsyncStatsClient(self.loop, statsd_url, 8125, prefix="bot") +        except socket.gaierror: +            log.warning(f"Statsd client failed to connect (Attempt(s): {attempt})") +            # Use a fallback strategy for retrying, up to 8 times. +            self._statsd_timerhandle = self.loop.call_later( +                retry_after, +                self._connect_statsd, +                statsd_url, +                retry_after * 2, +                attempt + 1 +            )      async def cache_filter_list_data(self) -> None:          """Cache all the data in the FilterList on the site.""" @@ -189,6 +211,9 @@ class Bot(commands.Bot):          if self.redis_session:              await self.redis_session.close() +        if self._statsd_timerhandle: +            self._statsd_timerhandle.cancel() +      def insert_item_into_filter_list_cache(self, item: Dict[str, str]) -> None:          """Add an item to the bots filter_list_cache."""          type_ = item["type"] diff --git a/bot/exts/moderation/infraction/management.py b/bot/exts/moderation/infraction/management.py index c58410f8c..b3783cd60 100644 --- a/bot/exts/moderation/infraction/management.py +++ b/bot/exts/moderation/infraction/management.py @@ -197,7 +197,7 @@ class ModManagement(commands.Cog):      # endregion      # region: Search infractions -    @infraction_group.group(name="search", invoke_without_command=True) +    @infraction_group.group(name="search", aliases=('s',), invoke_without_command=True)      async def infraction_search_group(self, ctx: Context, query: t.Union[UserMention, Snowflake, str]) -> None:          """Searches for infractions in the database."""          if isinstance(query, int): | 
