public async Task PrivateControlsMessageInit() { var existingControlsMessage = DateTextChannel.GetMessageAsync(PrivateControlsMessageId); var answers = new Answer[] { new Answer(LikeEmoji, e => { _ = ApplyPrivateReactionsAsync(e.User, LikeEmoji).ConfigureAwait(false); }), new Answer(CancelLikeEmoji, e => { _ = ApplyPrivateReactionsAsync(e.User, CancelLikeEmoji).ConfigureAwait(false); }), new Answer(DisLikeEmoji, e => { _ = ApplyPrivateReactionsAsync(e.User, DisLikeEmoji).ConfigureAwait(false); }), new Answer(TimeEmoji, e => { _ = ApplyPrivateReactionsAsync(e.User, TimeEmoji).ConfigureAwait(false); }) }; Task.WaitAny(new Task[] { existingControlsMessage, Task.Delay(5000) }); PrivateControlsMessage = await DialogFramework.CreateQuestion(DateTextChannel, PrivateMessageBody, answers, existingMessage : !existingControlsMessage.IsFaulted?existingControlsMessage.Result : null, behavior : MessageBehavior.Permanent, deleteAnswer : true, deleteAnswerTimeout : TimeSpan.Zero).ConfigureAwait(false); PrivateControlsMessageId = PrivateControlsMessage.Id; }
/// <summary> /// Gets or creates welcome message and refreshes reaction emojis /// </summary> /// <returns></returns> public async Task WelcomeMessageInit() { var existingWelcomeMessage = DateTextChannel.GetMessageAsync(WelcomeMessageId); //TODO Would be nice to have an override for one action with many emojis, passing emoji in for simplicity var answers = new Answer[2 + OptionEmojis.Count()]; answers[0] = new Answer(MaleEmoji, e => { //TODO doesn't add those that are not yet in activity UserState uState = AddOrGetUserState(e.User); uState.Gender = GenderEnum.Male; uState.AgeOptions = 0; }); answers[1] = new Answer(FemaleEmoji, e => { UserState uState = AddOrGetUserState(e.User); uState.Gender = GenderEnum.Female; uState.AgeOptions = 0; }); for (int i = 2; i < answers.Length; i++) { var index = i; answers[index] = new Answer(OptionEmojis[index - 2], e => { UserState uState = AddOrGetUserState(e.User); var option = 1 << (index - 2); if (uState.Gender == GenderEnum.Female) { uState.AgeOptions ^= option; //toggle age group } else { uState.AgeOptions = option; } }); } Task.WaitAny(new Task[] { existingWelcomeMessage, Task.Delay(5000) }); WelcomeMessage = await DialogFramework.CreateQuestion(DateTextChannel, WelcomeMessageBody, answers, existingMessage : !existingWelcomeMessage.IsFaulted?existingWelcomeMessage.Result : null, behavior : MessageBehavior.Permanent, deleteAnswer : true, deleteAnswerTimeout : TimeSpan.Zero); WelcomeMessageId = WelcomeMessage.Id; }