Add info about min and max chars to interview message

This commit is contained in:
Toastie 2025-02-04 20:41:01 +13:00
parent be44de1eb3
commit 491293947d
Signed by: toastie_t0ast
GPG key ID: 0861BE54AD481DC7
2 changed files with 15 additions and 3 deletions

View file

@ -93,6 +93,9 @@ public class ReferencedInterviewStep
// The entire interview tree is serialized and stored in the database to record responses as they are made. // The entire interview tree is serialized and stored in the database to record responses as they are made.
public class InterviewStep public class InterviewStep
{ {
public const int DEFAULT_MAX_FIELD_LENGTH = 1024;
public const int DEFAULT_MIN_FIELD_LENGTH = 0;
// Title of the message embed. // Title of the message embed.
[JsonProperty("heading")] [JsonProperty("heading")]
public string heading; public string heading;

View file

@ -289,7 +289,7 @@ public static class Interviewer
} }
// The length requirement is less than 1024 characters, and must be less than the configurable limit if it is set. // The length requirement is less than 1024 characters, and must be less than the configurable limit if it is set.
int maxLength = Math.Min(currentStep.maxLength ?? 1024, 1024); int maxLength = Math.Min(currentStep.maxLength ?? InterviewStep.DEFAULT_MAX_FIELD_LENGTH, InterviewStep.DEFAULT_MAX_FIELD_LENGTH);
if (answerMessage.Content.Length > maxLength) if (answerMessage.Content.Length > maxLength)
{ {
@ -303,7 +303,7 @@ public static class Interviewer
return; return;
} }
if (answerMessage.Content.Length < (currentStep.minLength ?? 0)) if (answerMessage.Content.Length < (currentStep.minLength ?? InterviewStep.DEFAULT_MIN_FIELD_LENGTH))
{ {
DiscordMessage lengthMessage = await answerMessage.RespondAsync(new DiscordEmbedBuilder DiscordMessage lengthMessage = await answerMessage.RespondAsync(new DiscordEmbedBuilder
{ {
@ -597,7 +597,16 @@ public static class Interviewer
string.IsNullOrWhiteSpace(step.selectorPlaceholder) ? "Select a user or role..." : step.selectorPlaceholder)); string.IsNullOrWhiteSpace(step.selectorPlaceholder) ? "Select a user or role..." : step.selectorPlaceholder));
break; break;
case StepType.TEXT_INPUT: case StepType.TEXT_INPUT:
embed.WithFooter("Reply to this message with your answer. You cannot include images or files."); string lengthInfo;
if (step.minLength != null)
{
lengthInfo = " (" + step.minLength + "-" + (step.maxLength ?? InterviewStep.DEFAULT_MAX_FIELD_LENGTH) + " characters)";
}
else
{
lengthInfo = " (Maximum " + (step?.maxLength ?? InterviewStep.DEFAULT_MAX_FIELD_LENGTH) + " characters)";
}
embed.WithFooter("Reply to this message with your answer" + lengthInfo + ". You cannot include images or files.");
break; break;
case StepType.INTERVIEW_END: case StepType.INTERVIEW_END:
case StepType.ERROR: case StepType.ERROR: