Пример #1
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <Message> argument)
        {
            var message = await argument;

            if (message.Attachments.Count > 0)
            {
                CV cv = new CV();
                TuzobotModelContainer db = new TuzobotModelContainer();
                foreach (var a in message.Attachments)
                {
                    Emotion[] emotions = await cv.Detect(a.ContentUrl);

                    if (emotions != null && emotions.Length > 0)
                    {
                        var     happyDelta    = ((double)emotions[0].Scores.Happiness - 0.5);
                        var     surpriseDelta = ((double)emotions[0].Scores.Surprise - 0.5);
                        Contest contest       = db.ContestSet.SingleOrDefault(c => c.Active);
                        if (contest == null)
                        {
                            contest = db.ContestSet.SingleOrDefault(c => c.Id == 2);
                        }
                        Conv conv      = db.ConvSet.SingleOrDefault(c => c.ConversationId == message.ConversationId);
                        var  newSubmit = new Submit();
                        newSubmit.UserName   = message.From.Name;
                        newSubmit.IsNotAdult = true;
                        newSubmit.IsWinner   = false;
                        newSubmit.Conv       = conv;
                        newSubmit.Image      = message.Attachments[0].ContentUrl;
                        newSubmit.Contest    = contest;
                        newSubmit.Score      = happyDelta * happyDelta + surpriseDelta * surpriseDelta;
                        db.SubmitSet.Add(newSubmit);
                        db.SaveChanges();

                        await context.PostAsync($"Счастье {(100*emotions[0].Scores.Happiness).ToString("N2")}%");

                        await context.PostAsync($"Удивление {(100 * emotions[0].Scores.Surprise).ToString("N2")}%");

                        await context.PostAsync($"Испуг {(100 * emotions[0].Scores.Fear).ToString("N2")}%");
                    }
                    else
                    {
                        await context.PostAsync($"К сожаленю, не смог распознать эмоцию, попробуй еще 😊");
                    }
                }
            }

            if (message.Text == "reset")
            {
                PromptDialog.Confirm(
                    context,
                    AfterResetAsync,
                    "Are you sure you want to reset the count?",
                    "Didn't get that!",
                    promptStyle: PromptStyle.None);
            }
            else
            {
                await context.PostAsync("Я умею распознавать эмоции на фотографиях, пришли мне слефи 😘");

                context.Wait(MessageReceivedAsync);
            }
        }
Пример #2
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
        {
            
            var message = await argument;

            if (admin && conStart)
            {
                if (DateTime.TryParse(message.Text, out contestEndDate))
                {
                    PromptDialog.Confirm(
                        context,
                        ContestStartFinal,
                        $"Запускаем конкурс:\n\n{ broadcastText}\n\n Завершение:{contestEndDate.ToString()} \n\nВсе правильно?",
                        "Не понимаю, отправим всем или нет?",
                        promptStyle: PromptStyle.None);
                }
                else
                {
                    var reply = context.MakeMessage();
                    reply.Text = "Извини, не понимаю 😏\n\n Когда закончится конкурс?";
                    reply.Attachments = DateSelect();

                    await context.PostAsync(reply);
                }
                return;
            }


            if (message.Text.Contains("выход"))
            {
                loginFlag = false;
                menu = false;
                admin = false;
                await context.PostAsync("До скорого!");
                context.Wait(MessageReceivedAsync);
                return;
            }

            if (con)
            {
                broadcastText = message.Text;
                PromptDialog.Confirm(
                    context,
                    ContestStart,
                    $"Ты хочешь отправить всем такое описание конкурса:\n\n{ message.Text}\n\n Правильно?",
                    "Не понимаю, отправим всем или нет?",
                    promptStyle: PromptStyle.None);
                return;
            }

            if (an)
            {
                    broadcastText = message.Text;
                    PromptDialog.Confirm(
                        context,
                        BroadcastAsync,
                        $"Ты хочешь отправить всем:\n\n{ message.Text}\n\n Правильно?",
                        "Не понимаю, отправим всем или нет?",
                        promptStyle: PromptStyle.None);
                    return;
            }

            if (menu)
            {
                if (message.Text == "res")
                {
                    con = true;
                    var db = new TuzobotModelContainer();

                    int userCount = db.ConvSet.Count();
                    int contestCount = db.ContestSet.Where(c => c.Active).Count();
                    int activeSubmissions = db.SubmitSet.Count(s => s.Contest.Active);
                    await context.PostAsync($"Оперативная сводка:\n\n Активных переписок в рассылке - {userCount}\n\nАктивных конкурсов - {contestCount}\n\nЗаявок на текущий конкурс - {activeSubmissions}");
                    context.Wait(MessageReceivedAsync);
                }

                if (message.Text == "an")
                {
                    an = true;
                    await context.PostAsync("Точно, давай сделаем анонс, что напишем?");
                    context.Wait(MessageReceivedAsync);
                }

                if (message.Text == "con")
                {
                    con = true;
                    await context.PostAsync("Супер, новый конкурс!\n\nОпиши его для ребят, не забудь про призы, это очень важно 😊");
                    context.Wait(MessageReceivedAsync);
                }

                if (message.Text == "end")
                {
                    PromptDialog.Confirm(
                        context,
                        EndContestBeforeDue,
                        $"Завершаем конкурс досрочно?",
                        "Не понимаю, завершаем или нет?",
                        promptStyle: PromptStyle.None);
                    return;
                }

                menu = false;
                return;
            }

            if (message.Text == "123" && loginFlag)
            {
                //adminConvId = message.ConversationId;
                admin = true;
                menu = true;
                var reply = context.MakeMessage();
                reply.Text = "Добро пожаловать, хозяин!\n\nЧего изволите?";
                reply.Attachments = AdminMenu();

                await context.PostAsync(reply);
                context.Wait(MessageReceivedAsync);
                return;
            }

            if (message.Text.Contains("Я админ"))
            {
                //if (message.ConversationId == "COGGhF5OhEapApPG9ZDdlCYgBKf2RBAmu96o9cP6Tj5tb4Gv")
                //{
                    loginFlag = true;
                    await context.PostAsync("Чем докажешь?");
                    context.Wait(MessageReceivedAsync);
                    return;
                //}
            }

            if (message.Attachments.Count > 0)
            {
                CV cv = new CV();
                TuzobotModelContainer db = new TuzobotModelContainer();
                foreach (var a in message.Attachments)
                {
                    Emotion[] emotions = await cv.Detect(a.ContentUrl);
                    if (emotions != null && emotions.Length > 0)
                    {
                        var happyDelta = ((double)emotions[0].Scores.Happiness - 0.5);
                        var surpriseDelta = ((double)emotions[0].Scores.Surprise - 0.5);
                        Contest contest = db.ContestSet.SingleOrDefault(c => c.Active);

                        if (contest == null)
                        {
                            contest = db.ContestSet.SingleOrDefault(c => c.Id == 2);
                        }
                        else
                        {
                            await context.PostAsync($"Твоя фотография принята на конкурс, но можно сделать еще лучше 🌟🌟🌟🌟");
                        }

                        Conv conv = db.ConvSet.SingleOrDefault(c => c.ConversationId == message.ConversationId);
                        var newSubmit = new Submit();
                        newSubmit.UserName = message.From.Name;
                        newSubmit.IsNotAdult = true;
                        newSubmit.IsWinner = false;
                        newSubmit.Conv = conv;
                        newSubmit.Image = message.Attachments[0].ContentUrl;
                        newSubmit.Contest = contest;
                        newSubmit.Score = happyDelta * happyDelta + surpriseDelta * surpriseDelta;
                        db.SubmitSet.Add(newSubmit);
                        db.SaveChanges();

                        await context.PostAsync($"Счастье {(100*emotions[0].Scores.Happiness).ToString("N2")}%");
                        await context.PostAsync($"Удивление {(100 * emotions[0].Scores.Surprise).ToString("N2")}%");
                        await context.PostAsync($"Испуг {(100 * emotions[0].Scores.Fear).ToString("N2")}%");

)
                    }
                    else
                    {
                        await context.PostAsync($"К сожаленю, не смог распознать эмоцию, попробуй еще 😊");
                    }
                }
            }


                await context.PostAsync("Я умею распознавать эмоции на фотографиях, пришли мне слефи 😘");
                context.Wait(MessageReceivedAsync);
        }