From 0266db55896da5044182d7f978c1bf035418f55f Mon Sep 17 00:00:00 2001 From: Bella | Nightshade Date: Sat, 23 Mar 2019 21:13:43 +0930 Subject: [PATCH] Added ellipsis truncation to system list descriptions --- src/pluralkit/bot/commands/system_commands.py | 16 ++++++++-------- src/pluralkit/bot/embeds.py | 12 ++++++++++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/pluralkit/bot/commands/system_commands.py b/src/pluralkit/bot/commands/system_commands.py index 2b861295..ab7510cc 100644 --- a/src/pluralkit/bot/commands/system_commands.py +++ b/src/pluralkit/bot/commands/system_commands.py @@ -136,13 +136,13 @@ async def system_timezone(ctx: CommandContext): if not timezone_name: raise CommandError("Time zone for city '{}' not found. This should never happen.".format(data[0]["display_name"])) - + # This should hopefully result in a valid time zone name # (if not, something went wrong) tz = await system.set_time_zone(ctx.conn, timezone_name) offset = tz.utcoffset(datetime.utcnow()) offset_str = "UTC{:+02d}:{:02d}".format(int(offset.total_seconds() // 3600), int(offset.total_seconds() // 60 % 60)) - + await ctx.reply_ok("System time zone set to {} ({}, {}).\n*Data from OpenStreetMap, queried using Nominatim.*".format(tz.tzname(datetime.utcnow()), offset_str, tz.zone)) @@ -218,7 +218,7 @@ async def account_link(ctx: CommandContext): async def account_unlink(ctx: CommandContext): system = await ctx.ensure_system() - + msg = await ctx.reply("Are you sure you want to unlink this account from your system?") if not await ctx.confirm_react(ctx.message.author, msg): raise CommandError("Account unlink cancelled.") @@ -363,9 +363,9 @@ async def system_frontpercent(ctx: CommandContext, system: System): async def system_list(ctx: CommandContext, system: System): all_members = sorted(await system.get_members(ctx.conn), key=lambda m: m.name.lower()) - page_size = 5 + page_size = 8 if len(all_members) <= page_size: - # If we have less than 10 members, don't bother paginating + # If we have less than 8 members, don't bother paginating await ctx.reply(embed=embeds.member_list(system, all_members, 0, page_size)) else: current_page = 0 @@ -388,15 +388,15 @@ async def system_list(ctx: CommandContext, system: System): try: reaction, _ = await ctx.client.wait_for("reaction_add", timeout=5*60, check=check) except asyncio.TimeoutError: - return + return if reaction.emoji == "\u2B05": current_page = (current_page - 1) % page_count elif reaction.emoji == "\u27A1": current_page = (current_page + 1) % page_count - + # If we can, remove the original reaction from the member # Don't bother checking permission if we're in DMs (wouldn't work anyway) if ctx.message.guild: if ctx.message.channel.permissions_for(ctx.message.guild.get_member(ctx.client.user.id)).manage_messages: - await reaction.remove(ctx.message.author) \ No newline at end of file + await reaction.remove(ctx.message.author) diff --git a/src/pluralkit/bot/embeds.py b/src/pluralkit/bot/embeds.py index a396b346..18941480 100644 --- a/src/pluralkit/bot/embeds.py +++ b/src/pluralkit/bot/embeds.py @@ -25,6 +25,12 @@ def truncate_description(s: str) -> str: return s[:2048] +def truncate_description_list(s: str) -> str: + if len(s) > 512: + return s[:512-45] + "..." + return s + + def truncate_title(s: str) -> str: return s[:256] @@ -238,8 +244,10 @@ def member_list(system: System, all_members: List[Member], current_page: int, pa member_description += "**Birthday:** {}\n".format(member.birthday_string()) if member.pronouns: member_description += "**Pronouns:** {}\n".format(member.pronouns) - if member.description: + if len(member.description) > 512: + member_description += "\n" + truncate_description_list(member.description) + "\n" + "Type `pk;member {}` for full description.".format(member.hid) + else: member_description += "\n" + member.description embed.add_field(name=member.name, value=truncate_field_body(member_description) or "\u200B", inline=False) - return embed \ No newline at end of file + return embed