[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
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()