Exemple #1
0
        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;
        }
Exemple #2
0
        /// <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;
        }