mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-20 18:06:08 -05:00
Optimize config calls in few places (#3766)
* Just a tiny PR improving config call in a lot of places (Specially events and Help) Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * missed this one Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * welp Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * welp Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * welp Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * jack Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> * Update redbot/cogs/mod/kickban.py Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com> * jack Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com> Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
@@ -48,15 +48,16 @@ class Bank(commands.Cog):
|
||||
"""Base command for bank settings."""
|
||||
if ctx.invoked_subcommand is None:
|
||||
if await bank.is_global():
|
||||
bank_name = await bank._config.bank_name()
|
||||
currency_name = await bank._config.currency()
|
||||
default_balance = await bank._config.default_balance()
|
||||
group = bank._config
|
||||
else:
|
||||
if not ctx.guild:
|
||||
return
|
||||
bank_name = await bank._config.guild(ctx.guild).bank_name()
|
||||
currency_name = await bank._config.guild(ctx.guild).currency()
|
||||
default_balance = await bank._config.guild(ctx.guild).default_balance()
|
||||
group = bank._config.guild(ctx.guild)
|
||||
group_data = await group.all()
|
||||
bank_name = group_data["bank_name"]
|
||||
currency_name = group_data["currency"]
|
||||
default_balance = group_data["default_balance"]
|
||||
max_balance = group_data["max_balance"]
|
||||
|
||||
settings = _(
|
||||
"Bank settings:\n\nBank name: {bank_name}\nCurrency: {currency_name}\n"
|
||||
@@ -65,7 +66,7 @@ class Bank(commands.Cog):
|
||||
bank_name=bank_name,
|
||||
currency_name=currency_name,
|
||||
default_balance=humanize_number(default_balance),
|
||||
maximum_bal=humanize_number(await bank.get_max_balance(ctx.guild)),
|
||||
maximum_bal=humanize_number(max_balance),
|
||||
)
|
||||
await ctx.send(box(settings))
|
||||
|
||||
|
||||
@@ -195,21 +195,19 @@ class Downloader(commands.Cog):
|
||||
The modules to check off.
|
||||
|
||||
"""
|
||||
installed_cogs = await self.config.installed_cogs()
|
||||
installed_libraries = await self.config.installed_libraries()
|
||||
for module in modules:
|
||||
if module.type == InstallableType.COG:
|
||||
installed = installed_cogs
|
||||
elif module.type == InstallableType.SHARED_LIBRARY:
|
||||
installed = installed_libraries
|
||||
else:
|
||||
continue
|
||||
module_json = module.to_json()
|
||||
repo_json = installed.setdefault(module.repo_name, {})
|
||||
repo_json[module.name] = module_json
|
||||
|
||||
await self.config.installed_cogs.set(installed_cogs)
|
||||
await self.config.installed_libraries.set(installed_libraries)
|
||||
async with self.config.all() as global_data:
|
||||
installed_cogs = global_data["installed_cogs"]
|
||||
installed_libraries = global_data["installed_libraries"]
|
||||
for module in modules:
|
||||
if module.type == InstallableType.COG:
|
||||
installed = installed_cogs
|
||||
elif module.type == InstallableType.SHARED_LIBRARY:
|
||||
installed = installed_libraries
|
||||
else:
|
||||
continue
|
||||
module_json = module.to_json()
|
||||
repo_json = installed.setdefault(module.repo_name, {})
|
||||
repo_json[module.name] = module_json
|
||||
|
||||
async def _remove_from_installed(self, modules: Iterable[InstalledModule]) -> None:
|
||||
"""Remove modules from the saved list
|
||||
@@ -221,20 +219,18 @@ class Downloader(commands.Cog):
|
||||
The modules to remove.
|
||||
|
||||
"""
|
||||
installed_cogs = await self.config.installed_cogs()
|
||||
installed_libraries = await self.config.installed_libraries()
|
||||
for module in modules:
|
||||
if module.type == InstallableType.COG:
|
||||
installed = installed_cogs
|
||||
elif module.type == InstallableType.SHARED_LIBRARY:
|
||||
installed = installed_libraries
|
||||
else:
|
||||
continue
|
||||
with contextlib.suppress(KeyError):
|
||||
installed[module._json_repo_name].pop(module.name)
|
||||
|
||||
await self.config.installed_cogs.set(installed_cogs)
|
||||
await self.config.installed_libraries.set(installed_libraries)
|
||||
async with self.config.all() as global_data:
|
||||
installed_cogs = global_data["installed_cogs"]
|
||||
installed_libraries = global_data["installed_libraries"]
|
||||
for module in modules:
|
||||
if module.type == InstallableType.COG:
|
||||
installed = installed_cogs
|
||||
elif module.type == InstallableType.SHARED_LIBRARY:
|
||||
installed = installed_libraries
|
||||
else:
|
||||
continue
|
||||
with contextlib.suppress(KeyError):
|
||||
installed[module._json_repo_name].pop(module.name)
|
||||
|
||||
async def _shared_lib_load_check(self, cog_name: str) -> Optional[Repo]:
|
||||
# remove in Red 3.4
|
||||
|
||||
@@ -83,12 +83,14 @@ class Filter(commands.Cog):
|
||||
)
|
||||
return
|
||||
elif count == 0 and timeframe == 0:
|
||||
await self.config.guild(ctx.guild).filterban_count.set(0)
|
||||
await self.config.guild(ctx.guild).filterban_time.set(0)
|
||||
async with self.config.guild(ctx.guild).all() as guild_data:
|
||||
guild_data["filterban_count"] = 0
|
||||
guild_data["filterban_time"] = 0
|
||||
await ctx.send(_("Autoban disabled."))
|
||||
else:
|
||||
await self.config.guild(ctx.guild).filterban_count.set(count)
|
||||
await self.config.guild(ctx.guild).filterban_time.set(timeframe)
|
||||
async with self.config.guild(ctx.guild).all() as guild_data:
|
||||
guild_data["filterban_count"] = count
|
||||
guild_data["filterban_time"] = timeframe
|
||||
await ctx.send(_("Count and time have been set."))
|
||||
|
||||
@commands.group(name="filter")
|
||||
@@ -276,8 +278,10 @@ class Filter(commands.Cog):
|
||||
This is disabled by default.
|
||||
"""
|
||||
guild = ctx.guild
|
||||
current_setting = await self.config.guild(guild).filter_names()
|
||||
await self.config.guild(guild).filter_names.set(not current_setting)
|
||||
|
||||
async with self.config.guild(guild).all() as guild_data:
|
||||
current_setting = guild_data["filter_names"]
|
||||
guild_data["filter_names"] = not current_setting
|
||||
if current_setting:
|
||||
await ctx.send(_("Names and nicknames will no longer be filtered."))
|
||||
else:
|
||||
@@ -365,21 +369,23 @@ class Filter(commands.Cog):
|
||||
return hits
|
||||
|
||||
async def check_filter(self, message: discord.Message):
|
||||
server = message.guild
|
||||
guild = message.guild
|
||||
author = message.author
|
||||
|
||||
filter_count = await self.config.guild(server).filterban_count()
|
||||
filter_time = await self.config.guild(server).filterban_time()
|
||||
user_count = await self.config.member(author).filter_count()
|
||||
next_reset_time = await self.config.member(author).next_reset_time()
|
||||
guild_data = await self.config.guild(guild).all()
|
||||
member_data = await self.config.member(author).all()
|
||||
filter_count = guild_data["filterban_count"]
|
||||
filter_time = guild_data["filterban_time"]
|
||||
user_count = member_data["filter_count"]
|
||||
next_reset_time = member_data["next_reset_time"]
|
||||
|
||||
if filter_count > 0 and filter_time > 0:
|
||||
if message.created_at.timestamp() >= next_reset_time:
|
||||
next_reset_time = message.created_at.timestamp() + filter_time
|
||||
await self.config.member(author).next_reset_time.set(next_reset_time)
|
||||
if user_count > 0:
|
||||
user_count = 0
|
||||
await self.config.member(author).filter_count.set(user_count)
|
||||
async with self.config.member(author).all() as member_data:
|
||||
member_data["next_reset_time"] = next_reset_time
|
||||
if user_count > 0:
|
||||
user_count = 0
|
||||
member_data["filter_count"] = user_count
|
||||
|
||||
hits = await self.filter_hits(message.content, message.channel)
|
||||
|
||||
@@ -399,17 +405,17 @@ class Filter(commands.Cog):
|
||||
):
|
||||
reason = _("Autoban (too many filtered messages.)")
|
||||
try:
|
||||
await server.ban(author, reason=reason)
|
||||
await guild.ban(author, reason=reason)
|
||||
except discord.HTTPException:
|
||||
pass
|
||||
else:
|
||||
await modlog.create_case(
|
||||
self.bot,
|
||||
server,
|
||||
guild,
|
||||
message.created_at,
|
||||
"filterban",
|
||||
author,
|
||||
server.me,
|
||||
guild.me,
|
||||
reason,
|
||||
)
|
||||
|
||||
@@ -449,12 +455,13 @@ class Filter(commands.Cog):
|
||||
return # Discord Hierarchy applies to nicks
|
||||
if await self.bot.is_automod_immune(member):
|
||||
return
|
||||
if not await self.config.guild(member.guild).filter_names():
|
||||
guild_data = await self.config.guild(member.guild).all()
|
||||
if not guild_data["filter_names"]:
|
||||
return
|
||||
|
||||
if await self.filter_hits(member.display_name, member.guild):
|
||||
|
||||
name_to_use = await self.config.guild(member.guild).filter_default_name()
|
||||
name_to_use = guild_data["filter_default_name"]
|
||||
reason = _("Filtered nickname") if member.nick else _("Filtered name")
|
||||
try:
|
||||
await member.edit(nick=name_to_use, reason=reason)
|
||||
|
||||
@@ -410,9 +410,8 @@ class KickBanMixin(MixinMeta):
|
||||
|
||||
queue_entry = (guild.id, user.id)
|
||||
await self.config.member(user).banned_until.set(unban_time.timestamp())
|
||||
cur_tbans = await self.config.guild(guild).current_tempbans()
|
||||
cur_tbans.append(user.id)
|
||||
await self.config.guild(guild).current_tempbans.set(cur_tbans)
|
||||
async with self.config.guild(guild).current_tempbans() as current_tempbans:
|
||||
current_tempbans.append(user.id)
|
||||
|
||||
with contextlib.suppress(discord.HTTPException):
|
||||
# We don't want blocked DMs preventing us from banning
|
||||
|
||||
Reference in New Issue
Block a user