From 81f146a2ef52f7660649154072df5e178fe09f9b Mon Sep 17 00:00:00 2001 From: Draper <27962761+Drapersniper@users.noreply.github.com> Date: Sun, 21 Jun 2020 18:45:35 +0100 Subject: [PATCH] [Mod] Only send the DM about migration if at least 1 scope entry has a non-default value (#3911) * Only send notify_owners in mod migration if at least 1 scope entry has a non default value * update string * use asynciter on these potentially large loops * check server settings too --- redbot/cogs/mod/mod.py | 45 ++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/redbot/cogs/mod/mod.py b/redbot/cogs/mod/mod.py index fedcfa6a4..75995376e 100644 --- a/redbot/cogs/mod/mod.py +++ b/redbot/cogs/mod/mod.py @@ -6,6 +6,8 @@ from collections import defaultdict from typing import List, Tuple import discord +from redbot.core.utils import AsyncIter + from redbot.core import Config, modlog, commands from redbot.core.bot import Red from redbot.core.i18n import Translator, cog_i18n @@ -95,7 +97,7 @@ class Mod( """Maybe update `delete_delay` value set by Config prior to Mod 1.0.0.""" if not await self.config.version(): guild_dict = await self.config.all_guilds() - for guild_id, info in guild_dict.items(): + async for guild_id, info in AsyncIter(guild_dict.items(), steps=25): delete_repeats = info.get("delete_repeats", False) if delete_repeats: val = 3 @@ -104,20 +106,37 @@ class Mod( await self.config.guild(discord.Object(id=guild_id)).delete_repeats.set(val) await self.config.version.set("1.0.0") # set version of last update if await self.config.version() < "1.1.0": - msg = _( - "Ignored guilds and channels have been moved. " - "Please use `[p]moveignoredchannels` if " - "you were previously using these functions." - ) - self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg)) + message_sent = False + async for e in AsyncIter((await self.config.all_channels()).values(), steps=25): + if e["ignored"] is not False: + msg = _( + "Ignored guilds and channels have been moved. " + "Please use `[p]moveignoredchannels` to migrate the old settings." + ) + self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg)) + message_sent = True + break + if message_sent is False: + async for e in AsyncIter((await self.config.all_guilds()).values(), steps=25): + if e["ignored"] is not False: + msg = _( + "Ignored guilds and channels have been moved. " + "Please use `[p]moveignoredchannels` to migrate the old settings." + ) + self.bot.loop.create_task( + send_to_owners_with_prefix_replaced(self.bot, msg) + ) + break await self.config.version.set("1.1.0") if await self.config.version() < "1.2.0": - msg = _( - "Delete delay settings have been moved. " - "Please use `[p]movedeletedelay` if " - "you were previously using these functions." - ) - self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg)) + async for e in AsyncIter((await self.config.all_guilds()).values(), steps=25): + if e["delete_delay"] != -1: + msg = _( + "Delete delay settings have been moved. " + "Please use `[p]movedeletedelay` to migrate the old settings." + ) + self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg)) + break await self.config.version.set("1.2.0") @commands.command()