Increase time span coverage for recent/upcoming

Also adds a simple way to prevent the resulting message
from growing too large
This commit is contained in:
Noi 2020-07-16 09:21:46 -07:00
parent 0bd9b79e50
commit e3a86dd6dc

View file

@ -161,7 +161,7 @@ namespace BirthdayBot.UserInterface
private async Task CmdUpcoming(string[] param, SocketTextChannel reqChannel, SocketGuildUser reqUser) private async Task CmdUpcoming(string[] param, SocketTextChannel reqChannel, SocketGuildUser reqUser)
{ {
var now = DateTimeOffset.UtcNow; var now = DateTimeOffset.UtcNow;
var search = DateIndex(now.Month, now.Day) - 4; // begin search 4 days prior to current date UTC var search = DateIndex(now.Month, now.Day) - 8; // begin search 8 days prior to current date UTC
if (search <= 0) search = 366 - Math.Abs(search); if (search <= 0) search = 366 - Math.Abs(search);
var query = await LoadList(reqChannel.Guild, true); var query = await LoadList(reqChannel.Guild, true);
@ -169,7 +169,7 @@ namespace BirthdayBot.UserInterface
var output = new StringBuilder(); var output = new StringBuilder();
var resultCount = 0; var resultCount = 0;
output.AppendLine("Recent and upcoming birthdays:"); output.AppendLine("Recent and upcoming birthdays:");
for (int count = 0; count <= 11; count++) // cover 11 days total (3 prior, current day, 7 upcoming) for (int count = 0; count <= 21; count++) // cover 21 days total (7 prior, current day, 14 upcoming)
{ {
var results = from item in query var results = from item in query
where item.DateIndex == search where item.DateIndex == search
@ -192,13 +192,21 @@ namespace BirthdayBot.UserInterface
var first = true; var first = true;
output.AppendLine(); output.AppendLine();
output.Append($"● `{Common.MonthNames[results.First().BirthMonth]}-{results.First().BirthDay.ToString("00")}`: "); output.Append($"● `{Common.MonthNames[results.First().BirthMonth]}-{results.First().BirthDay:00}`: ");
foreach (var item in names) foreach (var item in names)
{ {
if (first) first = false; if (first) first = false;
else output.Append(", "); else output.Append(", ");
output.Append(item); output.Append(item);
// If the output is starting to fill up, back out early and prepare to show the result as-is
if (output.Length > 970) goto listfull;
} }
continue;
listfull:
output.AppendLine();
output.Append("Not all birthdays have been shown as there are too many to list.");
} }
if (resultCount == 0) if (resultCount == 0)