Split long short-list results up into embed fields
This commit is contained in:
		@@ -1,6 +1,5 @@
 | 
				
			|||||||
using System;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Text;
 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
using DSharpPlus.Entities;
 | 
					using DSharpPlus.Entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,7 +27,32 @@ namespace PluralKit.Bot
 | 
				
			|||||||
                return $"[`{m.Hid}`] **{m.Name.SanitizeMentions()}**";
 | 
					                return $"[`{m.Hid}`] **{m.Name.SanitizeMentions()}**";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            eb.Description = string.Join("\n", members.Select(RenderLine));
 | 
					            var buf = new StringBuilder();
 | 
				
			||||||
 | 
					            var chunks = new List<string>();
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Split the list into properly-sized chunks
 | 
				
			||||||
 | 
					            foreach (var m in members)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var line = RenderLine(m);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // First chunk goes in description (2048 chars), rest go in embed values (1000 chars)
 | 
				
			||||||
 | 
					                var lengthLimit = chunks.Count == 0 ? 2048 : 1000;
 | 
				
			||||||
 | 
					                if (buf.Length + line.Length + 1 > lengthLimit)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    chunks.Add(buf.ToString());
 | 
				
			||||||
 | 
					                    buf.Clear();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                buf.Append(RenderLine(m));
 | 
				
			||||||
 | 
					                buf.Append("\n");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            chunks.Add(buf.ToString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Put the first chunk in the description, rest in blank-name embed fields
 | 
				
			||||||
 | 
					            eb.Description = chunks[0];
 | 
				
			||||||
 | 
					            for (var i = 1; i < chunks.Count; i++)
 | 
				
			||||||
 | 
					                // Field name is Unicode zero-width space
 | 
				
			||||||
 | 
					                eb.AddField("\u200B", chunks[i]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user