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:
Draper
2020-04-20 18:29:36 +01:00
committed by GitHub
parent e4018ec677
commit f59e77002b
7 changed files with 153 additions and 116 deletions

View File

@@ -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))

View File

@@ -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

View File

@@ -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)

View File

@@ -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