Added ellipsis truncation to system list descriptions

This commit is contained in:
Bella | Nightshade 2019-03-23 21:13:43 +09:30 committed by Astrid
parent 0aea658af9
commit 0266db5589
2 changed files with 18 additions and 10 deletions

View File

@ -136,13 +136,13 @@ async def system_timezone(ctx: CommandContext):
if not timezone_name: if not timezone_name:
raise CommandError("Time zone for city '{}' not found. This should never happen.".format(data[0]["display_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 # This should hopefully result in a valid time zone name
# (if not, something went wrong) # (if not, something went wrong)
tz = await system.set_time_zone(ctx.conn, timezone_name) tz = await system.set_time_zone(ctx.conn, timezone_name)
offset = tz.utcoffset(datetime.utcnow()) offset = tz.utcoffset(datetime.utcnow())
offset_str = "UTC{:+02d}:{:02d}".format(int(offset.total_seconds() // 3600), int(offset.total_seconds() // 60 % 60)) 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)) 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): async def account_unlink(ctx: CommandContext):
system = await ctx.ensure_system() system = await ctx.ensure_system()
msg = await ctx.reply("Are you sure you want to unlink this account from your 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): if not await ctx.confirm_react(ctx.message.author, msg):
raise CommandError("Account unlink cancelled.") 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): async def system_list(ctx: CommandContext, system: System):
all_members = sorted(await system.get_members(ctx.conn), key=lambda m: m.name.lower()) 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 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)) await ctx.reply(embed=embeds.member_list(system, all_members, 0, page_size))
else: else:
current_page = 0 current_page = 0
@ -388,15 +388,15 @@ async def system_list(ctx: CommandContext, system: System):
try: try:
reaction, _ = await ctx.client.wait_for("reaction_add", timeout=5*60, check=check) reaction, _ = await ctx.client.wait_for("reaction_add", timeout=5*60, check=check)
except asyncio.TimeoutError: except asyncio.TimeoutError:
return return
if reaction.emoji == "\u2B05": if reaction.emoji == "\u2B05":
current_page = (current_page - 1) % page_count current_page = (current_page - 1) % page_count
elif reaction.emoji == "\u27A1": elif reaction.emoji == "\u27A1":
current_page = (current_page + 1) % page_count current_page = (current_page + 1) % page_count
# If we can, remove the original reaction from the member # If we can, remove the original reaction from the member
# Don't bother checking permission if we're in DMs (wouldn't work anyway) # Don't bother checking permission if we're in DMs (wouldn't work anyway)
if ctx.message.guild: if ctx.message.guild:
if ctx.message.channel.permissions_for(ctx.message.guild.get_member(ctx.client.user.id)).manage_messages: if ctx.message.channel.permissions_for(ctx.message.guild.get_member(ctx.client.user.id)).manage_messages:
await reaction.remove(ctx.message.author) await reaction.remove(ctx.message.author)

View File

@ -25,6 +25,12 @@ def truncate_description(s: str) -> str:
return s[:2048] 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: def truncate_title(s: str) -> str:
return s[:256] 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()) member_description += "**Birthday:** {}\n".format(member.birthday_string())
if member.pronouns: if member.pronouns:
member_description += "**Pronouns:** {}\n".format(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 member_description += "\n" + member.description
embed.add_field(name=member.name, value=truncate_field_body(member_description) or "\u200B", inline=False) embed.add_field(name=member.name, value=truncate_field_body(member_description) or "\u200B", inline=False)
return embed return embed