mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-22 02:37:57 -05:00
[Mod] Move ignored guilds and channels to core (#3472)
* Move ignored guilds and channels to core Add caching for ignored guilds and channels Add caching for whitelist and blacklist Fix #3220 Add consume-rest for whitelist and blacklist commands to add multiple users or roles in one command * Add ability to ignore channel categories * black * moveignorechannels should be owner only and cleanup changes * add changelog entries * address Feedback
This commit is contained in:
@@ -17,7 +17,7 @@ from .settings import ModSettings
|
||||
|
||||
_ = T_ = Translator("Mod", __file__)
|
||||
|
||||
__version__ = "1.0.0"
|
||||
__version__ = "1.1.0"
|
||||
|
||||
|
||||
class CompositeMetaClass(type(commands.Cog), type(ABC)):
|
||||
@@ -85,35 +85,36 @@ class Mod(
|
||||
|
||||
async def _maybe_update_config(self):
|
||||
"""Maybe update `delete_delay` value set by Config prior to Mod 1.0.0."""
|
||||
if await self.settings.version():
|
||||
return
|
||||
guild_dict = await self.settings.all_guilds()
|
||||
for guild_id, info in guild_dict.items():
|
||||
delete_repeats = info.get("delete_repeats", False)
|
||||
if delete_repeats:
|
||||
val = 3
|
||||
else:
|
||||
val = -1
|
||||
await self.settings.guild(discord.Object(id=guild_id)).delete_repeats.set(val)
|
||||
await self.settings.version.set(__version__)
|
||||
if not await self.settings.version():
|
||||
guild_dict = await self.settings.all_guilds()
|
||||
for guild_id, info in guild_dict.items():
|
||||
delete_repeats = info.get("delete_repeats", False)
|
||||
if delete_repeats:
|
||||
val = 3
|
||||
else:
|
||||
val = -1
|
||||
await self.settings.guild(discord.Object(id=guild_id)).delete_repeats.set(val)
|
||||
await self.settings.version.set("1.0.0") # set version of last update
|
||||
if await self.settings.version() < "1.1.0":
|
||||
prefixes = await self.bot.get_valid_prefixes()
|
||||
msg = _(
|
||||
"Ignored guilds and channels have been moved. "
|
||||
"Please use `{prefix}moveignoredchannels` if "
|
||||
"you were previously using these functions."
|
||||
).format(prefix=prefixes[0])
|
||||
await self.bot.send_to_owners(msg)
|
||||
await self.settings.version.set(__version__)
|
||||
|
||||
# TODO: Move this to core.
|
||||
# This would be in .movetocore , but the double-under name here makes that more trouble
|
||||
async def bot_check(self, ctx):
|
||||
"""Global check to see if a channel or server is ignored.
|
||||
|
||||
Any users who have permission to use the `ignore` or `unignore` commands
|
||||
surpass the check.
|
||||
"""
|
||||
perms = ctx.channel.permissions_for(ctx.author)
|
||||
surpass_ignore = (
|
||||
isinstance(ctx.channel, discord.abc.PrivateChannel)
|
||||
or perms.manage_guild
|
||||
or await ctx.bot.is_owner(ctx.author)
|
||||
or await ctx.bot.is_admin(ctx.author)
|
||||
)
|
||||
if surpass_ignore:
|
||||
return True
|
||||
guild_ignored = await self.settings.guild(ctx.guild).ignored()
|
||||
chann_ignored = await self.settings.channel(ctx.channel).ignored()
|
||||
return not (guild_ignored or chann_ignored and not perms.manage_channels)
|
||||
@commands.command()
|
||||
@commands.is_owner()
|
||||
async def moveignoredchannels(self, ctx: commands.Context) -> None:
|
||||
"""Move ignored channels and servers to core"""
|
||||
all_guilds = await self.settings.all_guilds()
|
||||
all_channels = await self.settings.all_channels()
|
||||
for guild_id, settings in all_guilds.items():
|
||||
await self.bot._config.guild_from_id(guild_id).ignored.set(settings["ignored"])
|
||||
await self.settings.guild_from_id(guild_id).ignored.clear()
|
||||
for channel_id, settings in all_channels.items():
|
||||
await self.bot._config.channel_from_id(channel_id).ignored.set(settings["ignored"])
|
||||
await self.settings.channel_fro_id(channel_id).clear()
|
||||
await ctx.send(_("Ignored channels and guilds restored."))
|
||||
|
||||
Reference in New Issue
Block a user