async def chatDisplay(title, contentList): title = f" {title} " titleTextMax = len(title) GUI = ['╔','╗','╝','╚','╠','╣','║','═'] # determines the style of our GUI TL, TR, BR, BL, LI, RI, V, H = range(len(GUI)) # Constants for easily picking what peice we want borderTextLength = len(GUI[V]) padding = " " paddingSpaceMax = len(padding) spacer = ": " spacerTextMax = len(spacer) contentNameMax = max([len(userData[0]) for userData in contentList]) contentValueMax = max([len(str(userData[1])) for userData in contentList]) lineContent = borderTextLength + paddingSpaceMax + contentNameMax + spacerTextMax + contentValueMax + paddingSpaceMax contentMaxLength = lineContent if lineContent > titleTextMax else titleTextMax topBorder = GUI[TL] + ((contentMaxLength) * GUI[H]) + GUI[TR] titleContent = f"{GUI[V]}{title:^{contentMaxLength}}{GUI[V]}" titleBorder = f"{GUI[LI]}{GUI[H]*(contentMaxLength)}{GUI[RI]}" bottomBorder = GUI[BL] + ((contentMaxLength) * GUI[H]) + GUI[BR] print(topBorder) print(titleContent) print(titleBorder) lineContent = [] for index in range(len(contentList)): contentName, contentValue = contentList[index] content = f"{padding}{contentName:<{contentNameMax}}{spacer}{contentValue:>{contentValueMax}}{padding}" centered_content = f"{GUI[LI]}{content:^}{GUI[RI]}" print(centered_content) lineContent.append(centered_content) print(bottomBorder) final = "|\n"+topBorder + "\n" + titleContent + "\n" + titleBorder + "\n" + "\n".join(lineContent) + "\n" + bottomBorder+ "\n|" return final