[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
This commit is contained in:
Draper 2020-06-21 18:45:35 +01:00 committed by GitHub
parent 84d0282815
commit 81f146a2ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,6 +6,8 @@ from collections import defaultdict
from typing import List, Tuple from typing import List, Tuple
import discord import discord
from redbot.core.utils import AsyncIter
from redbot.core import Config, modlog, commands from redbot.core import Config, modlog, commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.i18n import Translator, cog_i18n 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.""" """Maybe update `delete_delay` value set by Config prior to Mod 1.0.0."""
if not await self.config.version(): if not await self.config.version():
guild_dict = await self.config.all_guilds() 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) delete_repeats = info.get("delete_repeats", False)
if delete_repeats: if delete_repeats:
val = 3 val = 3
@ -104,20 +106,37 @@ class Mod(
await self.config.guild(discord.Object(id=guild_id)).delete_repeats.set(val) 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 await self.config.version.set("1.0.0") # set version of last update
if await self.config.version() < "1.1.0": if await self.config.version() < "1.1.0":
msg = _( message_sent = False
"Ignored guilds and channels have been moved. " async for e in AsyncIter((await self.config.all_channels()).values(), steps=25):
"Please use `[p]moveignoredchannels` if " if e["ignored"] is not False:
"you were previously using these functions." msg = _(
) "Ignored guilds and channels have been moved. "
self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg)) "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") await self.config.version.set("1.1.0")
if await self.config.version() < "1.2.0": if await self.config.version() < "1.2.0":
msg = _( async for e in AsyncIter((await self.config.all_guilds()).values(), steps=25):
"Delete delay settings have been moved. " if e["delete_delay"] != -1:
"Please use `[p]movedeletedelay` if " msg = _(
"you were previously using these functions." "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)) )
self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg))
break
await self.config.version.set("1.2.0") await self.config.version.set("1.2.0")
@commands.command() @commands.command()