diff --git a/cogs/fun.py b/cogs/fun.py index 0587403..69ca01b 100644 --- a/cogs/fun.py +++ b/cogs/fun.py @@ -256,14 +256,14 @@ async def _beerparty( ): reason = ("\nReason: " + reason) if reason else "" msg = await ctx.send( - "Open invite to beerparty! React with 🍻 to join!" + reason - ) + f"Open invite to beerparty! React with 🍻 to join!{reason}" + ) await msg.add_reaction("\U0001f37b") await asyncio.sleep(60) msg = await ctx.channel.fetch_message(msg.id) users = [user async for user in msg.reactions[0].users()] users.remove(self.bot.user) - if len(users) == 0: + if not users: return await ctx.send("Nobody joined the beerparty :(") await ctx.send( ", ".join(user.display_name for user in users) + " joined the beerparty!" diff --git a/cogs/general.py b/cogs/general.py index f7c46c1..08b715c 100644 --- a/cogs/general.py +++ b/cogs/general.py @@ -48,8 +48,7 @@ async def _source( src = type(self.bot.help_command) module = src.__module__ filename = inspect.getsourcefile(src) - help_command = self.bot.get_command("help") - if help_command: + if help_command := self.bot.get_command("help"): embed.description = help_command.help.format(prefix=ctx.prefix) else: obj = self.bot.get_command(command.replace(".", " ")) @@ -97,7 +96,7 @@ async def define(self, ctx: commands.Context[CodingBot], *, word: str): return await ctx.send(f"Could not find definition for `{word}`") definition = definition[0] embed = discord.Embed( - title="Definition of {}".format(word), + title=f"Definition of {word}", description=f"**Meaning**: {definition.meaning}\n", color=discord.Color.random(), ) diff --git a/cogs/helper.py b/cogs/helper.py index 6f26bfb..138f005 100644 --- a/cogs/helper.py +++ b/cogs/helper.py @@ -53,9 +53,7 @@ async def cog_check(self, ctx: commands.Context[CodingBot]) -> bool: official_helper_role = ctx.guild.get_role(OFFICIAL_HELPER_ROLE_ID) - if official_helper_role not in ctx.author.roles: - return False - return True + return official_helper_role in ctx.author.roles async def capture_evidence( self, ctx: commands.Context[CodingBot] @@ -175,8 +173,8 @@ async def log( embed = discord.Embed(color=color, timestamp=discord.utils.utcnow()) - embed.description = "{} **Action:** {}\n**Reason:** {}\n".format( - icon, action_string.title(), reason + embed.description = ( + f"{icon} **Action:** {action_string.title()}\n**Reason:** {reason}\n" ) if duration: embed.description += "**Duration:** {}\n".format( @@ -272,12 +270,9 @@ async def help_warnings( for i, warning in enumerate(records, 1): helper = ctx.guild.get_member(warning.helper_id) - if helper: - helper = helper.mention - else: - helper = "Unknown" + helper = helper.mention if helper else "Unknown" embed.add_field( - name="`{}.` Reason: {}".format(i, warning.reason), + name=f"`{i}.` Reason: {warning.reason}", value=f"Issued by: {helper} - ", inline=False, ) diff --git a/cogs/listeners.py b/cogs/listeners.py index 44dc298..2abfdef 100644 --- a/cogs/listeners.py +++ b/cogs/listeners.py @@ -30,9 +30,7 @@ def valid_gh_sect(name: str): return False if name.startswith("-") or name.endswith("-"): return False - if not name.replace("-", "").isalnum(): - return False - return True + return name.replace("-", "").isalnum() self.valid_gh_sect = valid_gh_sect @@ -81,39 +79,39 @@ async def afk_user_messaage(self, message: discord.Message): record = self.bot.afk_cache.get(message.guild.id) if record: record = record.get(message.author.id) - if record: - _, time = record - if (datetime.utcnow() - datetime.utcfromtimestamp(time)).seconds < 30: - return - await self.bot.conn.delete_record( - "afk", - table="afk", - where=("user_id",), - values=(message.author.id,), - ) + if record: + _, time = record + if (datetime.utcnow() - datetime.utcfromtimestamp(time)).seconds < 30: + return + await self.bot.conn.delete_record( + "afk", + table="afk", + where=("user_id",), + values=(message.author.id,), + ) + try: + if "[AFK]" in message.author.display_name: + name = message.author.display_name.split(" ")[1:] + await message.author.edit(nick=" ".join(name)) + except (discord.HTTPException, discord.Forbidden): + pass + + staff_role = message.guild.get_role(795145820210462771) + if staff_role and staff_role in message.author.roles: + on_pat_staff = message.guild.get_role(726441123966484600) try: - if "[AFK]" in message.author.display_name: - name = message.author.display_name.split(" ")[1:] - await message.author.edit(nick=" ".join(name)) - except (discord.HTTPException, discord.Forbidden): + await message.author.add_roles(on_pat_staff) + except (discord.Forbidden, discord.HTTPException): pass - - staff_role = message.guild.get_role(795145820210462771) - if staff_role and staff_role in message.author.roles: - on_pat_staff = message.guild.get_role(726441123966484600) - try: - await message.author.add_roles(on_pat_staff) - except (discord.Forbidden, discord.HTTPException): - pass - del self.bot.afk_cache[message.guild.id][message.author.id] - em = discord.Embed( - description=f"{message.author.mention} Welcome back, " - "I removed your AFK!", - color=discord.Color.dark_gold(), - ) - msg = await message.reply(embed=em) - await asyncio.sleep(5) - await msg.delete() + del self.bot.afk_cache[message.guild.id][message.author.id] + em = discord.Embed( + description=f"{message.author.mention} Welcome back, " + "I removed your AFK!", + color=discord.Color.dark_gold(), + ) + msg = await message.reply(embed=em) + await asyncio.sleep(5) + await msg.delete() @commands.Cog.listener("on_message") async def user_mentioned(self, message: discord.Message): @@ -134,14 +132,14 @@ async def user_mentioned(self, message: discord.Message): record = self.bot.afk_cache.get(message.guild.id) if record: record = record.get(member.id) - if record: - reason, time_ = record - em = discord.Embed( - description=f"{member.mention} is AFK: {reason} " - f"()", - color=discord.Color.dark_blue(), - ) - await message.reply(embed=em) + if record: + reason, time_ = record + em = discord.Embed( + description=f"{member.mention} is AFK: {reason} " + f"()", + color=discord.Color.dark_blue(), + ) + await message.reply(embed=em) @commands.Cog.listener() async def on_message_edit( @@ -191,10 +189,7 @@ async def on_command_error(self, ctx: commands.Context, error: Exception) -> Non ) return await ctx.send(embed=embed, ephemeral=True) else: - print( - "Ignoring exception in command {}:".format(ctx.command), - file=sys.stderr, - ) + print(f"Ignoring exception in command {ctx.command}:", file=sys.stderr) traceback.print_exception( type(error), error, error.__traceback__, file=sys.stderr ) @@ -209,17 +204,17 @@ async def track_sent_message(self, message: discord.Message): return values = [message.author.id, message.guild.id, 1, 1] - columns = ["user_id", "guild_id", "message_count"] - - columns.append(status := message.author.status.name) + columns = [ + "user_id", + "guild_id", + "message_count", + status := message.author.status.name, + ] staff_role = message.guild.get_role(TCR_STAFF_ROLE_ID) if staff_role and staff_role in message.author.roles: # type: ignore columns.append("is_staff") values.append(1) - else: - pass - return await self.bot.conn.insert_record( "metrics", table="message_metric", diff --git a/cogs/misc.py b/cogs/misc.py index 6242096..478e265 100644 --- a/cogs/misc.py +++ b/cogs/misc.py @@ -367,19 +367,16 @@ async def thank_leaderboard(self, ctx: commands.Context[CodingBot]): ctx, check=lambda i: i.user.id == ctx.author.id, ) - paginator.add_button( - "delete", label="Delete", style=discord.ButtonStyle.danger - ) - await paginator.start() else: paginator = pg.Paginator(self.bot, embeds, ctx) paginator.add_button("back", emoji="◀️") paginator.add_button("goto", style=discord.ButtonStyle.primary) paginator.add_button("next", emoji="▶️") - paginator.add_button( - "delete", label="Delete", style=discord.ButtonStyle.danger - ) - await paginator.start() + + paginator.add_button( + "delete", label="Delete", style=discord.ButtonStyle.danger + ) + await paginator.start() @commands.hybrid_group(invoke_without_command=True) async def trainee(self, ctx: commands.Context[CodingBot]): @@ -400,14 +397,12 @@ async def trainee_list(self, ctx: commands.Context[CodingBot]): """ trainee_role = ctx.guild.get_role(729537643951554583) # type: ignore - members = trainee_role.members - - if not members: - trainees = "No trainees yet." - else: + if members := trainee_role.members: trainees = "\n".join( f"{i}. {member.mention}" for i, member in enumerate(members, 1) ) + else: + trainees = "No trainees yet." embed = discord.Embed( title="Trainees list", description=trainees, color=discord.Color.blue() ) diff --git a/cogs/moderation.py b/cogs/moderation.py index a99b4be..89077c0 100644 --- a/cogs/moderation.py +++ b/cogs/moderation.py @@ -180,8 +180,8 @@ async def log( embed = discord.Embed(color=color, timestamp=discord.utils.utcnow()) - embed.description = "{} **Action:** {}\n**Reason:** {}\n".format( - icon, action_string.title(), reason + embed.description = ( + f"{icon} **Action:** {action_string.title()}\n**Reason:** {reason}\n" ) if duration: embed.description += "**Duration:** {}\n".format( @@ -224,8 +224,7 @@ async def kick( {prefix}kick {user} Because I don't like them """ assert ctx.guild is not None - check_made = self.check_member_permission(ctx, member) - if check_made: + if check_made := self.check_member_permission(ctx, member): return await self.bot.reply(ctx, check_made) try: await member.send( @@ -262,22 +261,20 @@ async def ban( {prefix}ban {user} spamming """ assert ctx.guild is not None - check_made = self.check_member_permission(ctx, member) - if check_made: + if check_made := self.check_member_permission(ctx, member): return await self.bot.reply(ctx, check_made) - else: - try: - await member.send( - "You have been :hammer: **Banned** :hammer: from " - f"**{ctx.guild.name}**. \nReason: {reason}" - ) - except (discord.Forbidden, discord.HTTPException): - pass - await ctx.guild.ban(member, reason=reason, delete_message_days=7) - await self.bot.reply(ctx, f"Banned {member.mention}") - evidence = await self.capture_evidence(ctx) - await self.log(action="ban", moderator=ctx.author, member=member, - undo=False, reason=reason, duration=None, evidence=evidence) + try: + await member.send( + "You have been :hammer: **Banned** :hammer: from " + f"**{ctx.guild.name}**. \nReason: {reason}" + ) + except (discord.Forbidden, discord.HTTPException): + pass + await ctx.guild.ban(member, reason=reason, delete_message_days=7) + await self.bot.reply(ctx, f"Banned {member.mention}") + evidence = await self.capture_evidence(ctx) + await self.log(action="ban", moderator=ctx.author, member=member, + undo=False, reason=reason, duration=None, evidence=evidence) @commands.hybrid_command(name="unban") @commands.has_permissions(ban_members=True) @@ -327,8 +324,7 @@ async def mute( {prefix}mute [reason] """ assert ctx.guild is not None - check_made = self.check_member_permission(ctx, member) - if check_made: + if check_made := self.check_member_permission(ctx, member): return await self.bot.reply(ctx, check_made) try: @@ -366,8 +362,7 @@ async def unmute( Example: {prefix}unmute {user} I am feeling generous """ - check_made = self.check_member_permission(ctx, member) - if check_made: + if check_made := self.check_member_permission(ctx, member): return await self.bot.reply(ctx, check_made) try: await member.timeout(None) @@ -402,16 +397,13 @@ async def massban( ) counter_dict: Dict[str, Any] = {"banned": [], "not_banned": []} for user in users: - check_made = self.check_member_permission(ctx, user) - if check_made: + if check_made := self.check_member_permission(ctx, user): counter_dict["not_banned"].append(user) continue await ctx.guild.ban(user) # type: ignore counter_dict["banned"].append(user) embed = discord.Embed(color=discord.Color.red()) - description = "Following members were banned:\n{}".format( - ", ".join(f"{user.mention}" for user in counter_dict["banned"]) - ) + description = f'Following members were banned:\n{", ".join(f"{user.mention}" for user in counter_dict["banned"])}' if counter_dict["not_banned"]: embed.color = discord.Color.yellow() description += "\n\nFollowing members were not banned:\n" @@ -437,8 +429,7 @@ async def warn( Example: {prefix}warn {user} broke rules """ - check = self.check_member_permission(ctx, member, priv_level=0) - if check: + if check := self.check_member_permission(ctx, member, priv_level=0): return await self.bot.reply(ctx, check) assert ctx.guild is not None if not reason: @@ -506,12 +497,9 @@ async def warnings(self, ctx: commands.Context[CodingBot], member: discord.Membe for i, warning in enumerate(records, 1): moderator = ctx.guild.get_member(warning.moderator_id) - if moderator: - moderator = moderator.mention - else: - moderator = "Unknown" + moderator = moderator.mention if moderator else "Unknown" embed.add_field( - name="`{}.` Reason: {}".format(i, warning.reason), + name=f"`{i}.` Reason: {warning.reason}", value=f"Issued by: {moderator} - ", inline=False, ) @@ -671,7 +659,7 @@ async def delete( """ if not message and not ctx.message.reference: return await ctx.send("Please specify a message to delete.") - elif not message and ctx.message.reference: + elif not message: message = ctx.message.reference.resolved await message.delete() else: @@ -862,22 +850,22 @@ async def raid_mode_enable(self, ctx: commands.Context[CodingBot]) -> None: This will ban all members that have joined during the raid. """ - if not self.bot.raid_mode_enabled: - if self.bot.raid_checker.possible_raid: - self.bot.raid_mode_enabled = True - await self.bot.reply(ctx, "Raid mode is now enabled.") - for member in self.bot.raid_checker.cache: - if self.bot.raid_checker.check(member): - await member.ban( - reason="Raid mode enabled and met raid criteria." - ) - else: - await self.bot.reply( - ctx, "There is no raid that has been detected yet." - ) - else: + if self.bot.raid_mode_enabled: await self.bot.reply(ctx, "Raid mode is already enabled.") + elif self.bot.raid_checker.possible_raid: + self.bot.raid_mode_enabled = True + await self.bot.reply(ctx, "Raid mode is now enabled.") + for member in self.bot.raid_checker.cache: + if self.bot.raid_checker.check(member): + await member.ban( + reason="Raid mode enabled and met raid criteria." + ) + else: + await self.bot.reply( + ctx, "There is no raid that has been detected yet." + ) + @raid_mode.command(name="disable") async def raid_mode_disable(self, ctx: commands.Context[CodingBot]) -> None: if self.bot.raid_mode_enabled: diff --git a/cogs/tasks.py b/cogs/tasks.py index 19ad6a2..0946e73 100644 --- a/cogs/tasks.py +++ b/cogs/tasks.py @@ -72,25 +72,20 @@ async def status_change(self): "bob get a gf", "a documentary", ] - tcr = self.bot.get_guild(681882711945641997) - if tcr: + if tcr := self.bot.get_guild(681882711945641997): if tcr.get_role(795145820210462771): statuses.append( random.choice(tcr.get_role(795145820210462771).members).name ) # type: ignore if tcr.get_role(737517726737629214): statuses.append( - random.choice(tcr.get_role(737517726737629214).members).name - + " (Server Booster)" - ) # type: ignore + f"{random.choice(tcr.get_role(737517726737629214).members).name} (Server Booster)" + ) await self.bot.change_presence( activity=discord.Activity( type=discord.ActivityType.watching, - name=random.choice(statuses) - + " | " - + self.bot.default_prefixes[0] - + "help", + name=f"{random.choice(statuses)} | {self.bot.default_prefixes[0]}help", ) ) diff --git a/ext/helpers.py b/ext/helpers.py index e0b94ad..6a0174b 100644 --- a/ext/helpers.py +++ b/ext/helpers.py @@ -68,10 +68,10 @@ async def find_anime_source(session, source_image: str): def grouper(n, iterable): it = iter(iterable) while True: - chunk = tuple(itertools.islice(it, n)) - if not chunk: + if chunk := tuple(itertools.islice(it, n)): + yield chunk + else: return - yield chunk def ordinal_suffix_of(i): @@ -88,7 +88,7 @@ def ordinal_suffix_of(i): async def log_error(bot: CodingBot, event_method: str, *args: Any, **kwargs: Any): channel = bot.get_channel(826861610173333595) try: - title = "Ignoring exception in {}".format(event_method) + title = f"Ignoring exception in {event_method}" err = "".join(traceback.format_exc()) embed = discord.Embed( title=title, @@ -100,7 +100,7 @@ async def log_error(bot: CodingBot, event_method: str, *args: Any, **kwargs: Any # channel is always a Messageable await channel.send(embed=embed) # type: ignore except (discord.errors.Forbidden, AttributeError): - print("Ignoring exception in {}".format(event_method), file=sys.stderr) + print(f"Ignoring exception in {event_method}", file=sys.stderr) traceback.print_exc() @@ -135,9 +135,7 @@ def create_trash_meme(member_avatar: BytesIO, author_avatar: BytesIO) -> discord buffer = BytesIO() background.save(buffer, format="PNG") buffer.seek(0) - file = discord.File(buffer, filename="Trash.png") - - return file + return discord.File(buffer, filename="Trash.png") class WelcomeBanner: @@ -236,8 +234,7 @@ def generate_image(self, member: discord.Member, **kwargs: Any) -> discord.File: buf = BytesIO() txt.save(buf, format="png") buf.seek(0) - file = discord.File(buf, filename="welcome.png") - return file + return discord.File(buf, filename="welcome.png") async def construct_image(self, **kwargs: Any) -> discord.File: member = kwargs.pop("member") @@ -266,7 +263,7 @@ async def construct_image(self, **kwargs: Any) -> discord.File: except AttributeError: banner = "./storage/banner.png" - file = await self.generate_image( + return await self.generate_image( member, inviter=inviter, vanity=vanity, @@ -275,7 +272,6 @@ async def construct_image(self, **kwargs: Any) -> discord.File: banner=banner, ago=ago, ) - return file class UrbanDefinition: @@ -476,8 +472,7 @@ async def define(self, word: str, results: int = 1) -> List[UrbanDefinition]: raise Exception("Failed to get definition") else: text = await resp.text() - result = await self.parse(text, results) - return result + return await self.parse(text, results) class Spotify: @@ -593,18 +588,17 @@ async def get_from_local(self, bot, act: discord.Spotify) -> discord.File: s = tuple(f"{string.ascii_letters}{string.digits}{string.punctuation} ") artists = ", ".join(act.artists) artists = "".join([x for x in artists if x in s]) - artists = artists[0:36] + "..." if len(artists) > 36 else artists + artists = f"{artists[:36]}..." if len(artists) > 36 else artists time = act.duration.seconds time_at = ( dt.datetime.utcnow().replace(tzinfo=dt.timezone.utc) - act.start ).total_seconds() track = time_at / time time = f"{time // 60:02d}:{time % 60:02d}" - time_at = f"{int((time_at if time_at > 0 else 0) // 60):02d}:"\ - f"{int((time_at if time_at > 0 else 0) % 60):02d}" + time_at = f"{int(max(time_at, 0) // 60):02d}:{int(max(time_at, 0) % 60):02d}" pog = act.album_cover_url name = "".join([x for x in act.title if x in s]) - name = name[0:21] + "..." if len(name) > 21 else name + name = f"{name[:21]}..." if len(name) > 21 else name rad = await bot.session.get(pog) pic = BytesIO(await rad.read()) return await self.pil_process(pic, name, artists, time, time_at, track) @@ -738,21 +732,22 @@ async def check_for_raid(self): member : discord.Member member to check """ - if not self.bot.raid_mode_enabled: - if self.possible_raid or not self.cache: - return - time_join_day = [ - (discord.utils.utcnow() - member.created_at).days - for member in self.cache - ] - min_days = min(time_join_day) - if ( - len( - [x for x in time_join_day if x in range(min_days - 1, min_days + 1)] - ) - >= 4 - ): - self.raid_mode_criteria = min_days - self.possible_raid = True - return await self.notify_staff() - self.cache.clear() + if self.bot.raid_mode_enabled: + return + if self.possible_raid or not self.cache: + return + time_join_day = [ + (discord.utils.utcnow() - member.created_at).days + for member in self.cache + ] + min_days = min(time_join_day) + if ( + len( + [x for x in time_join_day if x in range(min_days - 1, min_days + 1)] + ) + >= 4 + ): + self.raid_mode_criteria = min_days + self.possible_raid = True + return await self.notify_staff() + self.cache.clear() diff --git a/ext/http.py b/ext/http.py index deacd36..d4bcd44 100644 --- a/ext/http.py +++ b/ext/http.py @@ -7,31 +7,32 @@ def __init__(self, session: aiohttp.ClientSession): self.session = session self.cache = {"piston": {}} self.api = { - # ////////////////////////////////////////////////////////////////////////// - # prelude "get": { "meme": lambda: self.api["meme-api"]["gimme"](), }, - # //////////////////////////////////////////////////////////////////////// - # "rock": { - # "random": lambda: self.get( - # "https://rockapi.apiworks.tech/rock/random", _json=True - # ), - # "top": lambda: self.get("https://rockapi.apiworks.tech/rock/top"), - # }, "numbers": { "random": lambda _type="trivia": self.api["numbers"][ - "random_" + _type + f"random_{_type}" ](), "number": lambda _type="trivia": self.api["numbers"][_type](), "random_trivia": lambda: self.get( "http://numbersapi.com/random/trivia" ), - "random_math": lambda: self.get("http://numbersapi.com/random/math"), - "random_date": lambda: self.get("http://numbersapi.com/random/date"), - "random_year": lambda: self.get("http://numbersapi.com/random/year"), - "date": lambda date: self.get(f"http://numbersapi.com/{date}/date"), - "year": lambda year: self.get(f"http://numbersapi.com/{year}/year"), + "random_math": lambda: self.get( + "http://numbersapi.com/random/math" + ), + "random_date": lambda: self.get( + "http://numbersapi.com/random/date" + ), + "random_year": lambda: self.get( + "http://numbersapi.com/random/year" + ), + "date": lambda date: self.get( + f"http://numbersapi.com/{date}/date" + ), + "year": lambda year: self.get( + f"http://numbersapi.com/{year}/year" + ), "trivia": lambda num: self.get(f"http://numbersapi.com/{num}"), "math": lambda num: self.get(f"http://numbersapi.com/{num}/math"), }, @@ -47,7 +48,9 @@ def __init__(self, session: aiohttp.ClientSession): ), }, "meme-api": { - "gimme": lambda: self.get("https://meme-api.com/gimme/", _json=True) + "gimme": lambda: self.get( + "https://meme-api.com/gimme/", _json=True + ) }, "some-random-api": { "bottoken": lambda: self.get( @@ -65,7 +68,9 @@ def __init__(self, session: aiohttp.ClientSession): "lyrics": lambda query: self.get( f"https://some-random-api.ml/lyrics?title={query}" ), - "joke": lambda: self.get("https://some-random-api.ml/joke", _json=True), + "joke": lambda: self.get( + "https://some-random-api.ml/joke", _json=True + ), "filters": { "invert": lambda pfp: f"https://some-random-api.ml/canvas/invert?avatar={pfp}", "greyscale": lambda pfp: f"https://some-random-api.ml/canvas/greyscale?avatar={pfp}", @@ -76,7 +81,8 @@ def __init__(self, session: aiohttp.ClientSession): }, "joke": { "api": lambda: self.get( - "https://backend-omega-seven.vercel.app/api/getjoke", _json=True + "https://backend-omega-seven.vercel.app/api/getjoke", + _json=True, ), }, } diff --git a/ext/models.py b/ext/models.py index b6aa674..f1d6592 100644 --- a/ext/models.py +++ b/ext/models.py @@ -188,18 +188,16 @@ async def select_record( values: Optional[Tuple[Any, ...]] = None, extras: Optional[List[str]] = None, ) -> Optional[List[Record]]: - statement = """SELECT {} FROM {}""".format(", ".join(arguments), table) + statement = f"""SELECT {", ".join(arguments)} FROM {table}""" if where is not None: assign_question = map(lambda x: f"{x} = ?", where) - statement += " WHERE {}".format(" AND ".join(assign_question)) + statement += f' WHERE {" AND ".join(assign_question)}' if extras: for stuff in extras: statement += f" {stuff}" async with self.cursor(connection) as cursor: await cursor.execute(statement, values or ()) - # type: ignore # Type checker cries unnecessarily. - rows: List[aiosqlite.Row[Any]] = [i async for i in cursor] - if rows: + if rows := [i async for i in cursor]: return [Record.from_tuple(arguments, row) for row in rows] return None @@ -215,7 +213,7 @@ async def delete_record( delete_statement = f"DELETE FROM {table}" if where is not None: assign_question = map(lambda x: f"{x} = ?", where) - delete_statement += " WHERE {}".format(" AND ".join(assign_question)) + delete_statement += f' WHERE {" AND ".join(assign_question)}' async with self.cursor(connection) as cursor: await cursor.execute(delete_statement, values or ()) @@ -390,8 +388,7 @@ async def setup_hook(self) -> None: os.environ["JISHAKU_NO_UNDERSCORE"] = "True" await self.load_extension("jishaku") self.logger.info("Loaded Jishaku Cog") - jishaku = self.get_cog("Jishaku") - if jishaku: + if jishaku := self.get_cog("Jishaku"): jishaku.hidden = True async def start(self, token: str, *, reconnect: bool = True) -> None: @@ -424,8 +421,7 @@ async def on_member_join(self, member: discord.Member) -> None: if banned: return - rules = member.guild.rules_channel - if rules: + if rules := member.guild.rules_channel: rules_channel = rules.mention else: rules_channel = "No official rule channel set yet." diff --git a/ext/ui/view.py b/ext/ui/view.py index 066bcf8..7645efc 100644 --- a/ext/ui/view.py +++ b/ext/ui/view.py @@ -44,9 +44,7 @@ async def timer(self): return await self.msg.edit( embed=self.cog.bot.embed( - title="compiling **[** {} **]**".format( - int(time.time()) - self.timestamp - ) + title=f"compiling **[** {int(time.time()) - self.timestamp} **]**" ) ) @@ -67,14 +65,13 @@ async def get_code_out(self): for line in lines: if len(line) > 500: output.extend(sliced(line, 500)) - else: - if len(output) > 0: - if len(output[-1].split("\n")) > 15: - output.append(line + "\n") - else: - output[-1] += line + "\n" - else: + elif output: + if len(output[-1].split("\n")) > 15: output.append(line + "\n") + else: + output[-1] += line + "\n" + else: + output.append(line + "\n") self.output = output self.ran = self.res["ran"] self.is_compiled = True @@ -151,9 +148,7 @@ async def _delete(self, interaction: discord.Interaction, button: discord.Button await self.msg.delete() async def interaction_check(self, interaction: discord.Interaction) -> bool: - if interaction.user == self.author: - return True - return False + return interaction.user == self.author class ConfirmButton(ui.View):