implemented polls in the discord bot

This commit is contained in:
Sarah Faey 2023-01-14 16:44:18 +01:00
parent 1d999e89bf
commit 715b14ecc5
13 changed files with 277 additions and 6 deletions

View file

@ -64,6 +64,22 @@ namespace DiscordBot.CommandHandlers
await component.RespondAsync("Opting out failed, please try again later or change the setting on the website.");
}
break;
case Constants.ComponentIds.POLL_ANSWER_BUTTON:
PollMessage.Parameters pollAnswerParameters = PollMessage.ParseId(component.Data.CustomId);
ApiPollAnswer answer = new ApiPollAnswer()
{
Answer = string.Empty,
OptionId = pollAnswerParameters.OptionId,
PollId = pollAnswerParameters.PollId,
UserId = component.User.Id
};
await _httpService.AnswerPoll(answer);
await component.RespondAsync("Answer sent.", ephemeral: true);
break;
case Constants.ComponentIds.POLL_CUSTOM_ANSWER_BUTTON:
PollMessage.Parameters pollCustomParameters = PollMessage.ParseId(component.Data.CustomId);
await component.RespondWithModalAsync(PollCustomModal.buildMessage(pollCustomParameters.PollId, component.Message.Content));
break;
}
}

View file

@ -63,6 +63,19 @@ namespace DiscordBot.CommandHandlers
await modal.RespondAsync($"signing up failed", ephemeral: true);
}
break;
case Constants.ComponentIds.POLL_CUSTOM_ANSWER_MODAL:
PollCustomModal.Parameters pollParameters = PollCustomModal.ParseId(modal.Data.CustomId);
string modalAnswer = components.First(x => x.CustomId == Constants.ComponentIds.POLL_CUSTOM_ANSWER_TEXT_BOX).Value;
ApiPollAnswer answer = new ApiPollAnswer()
{
Answer = modalAnswer,
OptionId = 0,
PollId = pollParameters.PollId,
UserId = modal.User.Id
};
await _httpService.AnswerPoll(answer);
await modal.RespondAsync("Answer sent.", ephemeral: true);
break;
}
}
}

View file

@ -54,6 +54,18 @@ namespace DiscordBot.CommandHandlers
});
}
break;
case Constants.ComponentIds.POLL_DROP_DOWN:
PollMessage.Parameters pollParameters = PollMessage.ParseId(component.Data.CustomId);
ApiPollAnswer answer = new ApiPollAnswer()
{
Answer = string.Empty,
OptionId = int.Parse(component.Data.Values.First()),
PollId = pollParameters.PollId,
UserId = component.User.Id
};
await _httpService.AnswerPoll(answer);
await component.RespondAsync("Answer sent.", ephemeral: true);
break;
}
}