Esempio n. 1
0
        private async void Bot_OnMessage(object sender, TBot.Args.MessageEventArgs e)
        {
            try
            {
                if (e.Message is null)
                {
                    return;
                }

                switch (e.Message.Type)
                {
                case TBot.Types.Enums.MessageType.Text:
                    if (string.IsNullOrWhiteSpace(e.Message.Text))
                    {
                        return;
                    }
                    var message = new BotTextMessage
                    {
                        Id   = e.Message.MessageId.ToString(),
                        Date = e.Message.Date,
                        Text = e.Message.Text,
                        Chat = new TelegramBotChat
                        {
                            Id        = e.Message.Chat.Id.ToString(),
                            ChatType  = (BotChatType)e.Message.Chat.Type,
                            Name      = e.Message.Chat.Title,
                            Title     = e.Message.Chat.Title,
                            Username  = e.Message.Chat.Username,
                            FirstName = e.Message.Chat.FirstName,
                            LastName  = e.Message.Chat.LastName
                        },
                        User = new TelegramBotUser
                        {
                            Id        = e.Message.From.Id.ToString(),
                            Name      = e.Message.From.Username,
                            FirstName = e.Message.From.FirstName,
                            LastName  = e.Message.From.LastName
                        }
                    };
                    TextMessageReceived?.Invoke(this, new EventArgs <BotTextMessage>(message));
                    break;

                case TBot.Types.Enums.MessageType.Photo:
                    foreach (var photo in e.Message.Photo)
                    {
                        var photoFileInfo = await _bot.GetFileAsync(photo.FileId);

                        var photoMessage = new BotPhotoMessage
                        {
                            Id          = e.Message.MessageId.ToString(),
                            Date        = e.Message.Date,
                            PhotoWidth  = photo.Width,
                            PhotoHeight = photo.Height,
                            PhotoId     = photo.FileId,
                            PhotoSize   = photo.FileSize,
                            PhotoName   = photoFileInfo.FilePath,
                            PhotoStream = new Lazy <Stream>(() =>
                            {
                                var ms = new MemoryStream();
                                _bot.DownloadFileAsync(photoFileInfo.FilePath, ms).WaitAsync();
                                return(ms);
                            }),
                            Chat = new TelegramBotChat
                            {
                                Id        = e.Message.Chat.Id.ToString(),
                                ChatType  = (BotChatType)e.Message.Chat.Type,
                                Name      = e.Message.Chat.Title,
                                Title     = e.Message.Chat.Title,
                                Username  = e.Message.Chat.Username,
                                FirstName = e.Message.Chat.FirstName,
                                LastName  = e.Message.Chat.LastName
                            },
                            User = new TelegramBotUser
                            {
                                Id        = e.Message.From.Id.ToString(),
                                Name      = e.Message.From.Username,
                                FirstName = e.Message.From.FirstName,
                                LastName  = e.Message.From.LastName
                            }
                        };
                        PhotoMessageReceived?.Invoke(this, new EventArgs <BotPhotoMessage>(photoMessage));
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                Core.Log.Write(ex);
            }
        }
Esempio n. 2
0
        private void Botik_OnMessageAsync(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            //  Тут очень простое дело - банально отправляем назад сообщения
            var message = e.Message;

            formUpdater("Тип сообщения : " + message.Type.ToString());

            //  Получение файла (картинки)
            if (message.Type == Telegram.Bot.Types.Enums.MessageType.Photo)
            {
                formUpdater("Picture loadining started");
                var  photoId = message.Photo.Last().FileId;
                File fl      = botik.GetFileAsync(photoId).Result;

                var img = System.Drawing.Image.FromStream(botik.DownloadFileAsync(fl.FilePath).Result);

                System.Drawing.Bitmap bm = new System.Drawing.Bitmap(img);
                System.Drawing.Bitmap uProcessed;
                //  Масштабируем aforge
                try
                {
                    uProcessed = MagicEye.ProcessDataSetImage(bm);
                }
                catch
                {
                    botik.SendTextMessageAsync(message.Chat.Id, "Глаз замылился");
                    return;
                }
                uProcessed.Save(@"..\..\1.jpg");

                Sample sample = SamplerConverter.Convert(uProcessed);

                var x = perseptron.Predict(sample);
                switch (x)
                {
                case FigureType.zero: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на нолик"); break;

                case FigureType.one: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на единичку"); break;

                case FigureType.two: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на двойку"); break;

                case FigureType.three: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на тройку"); break;

                case FigureType.four: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на четверку"); break;

                case FigureType.five: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на пятерку"); break;

                case FigureType.six: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на шестерку"); break;

                case FigureType.seven: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на семерку"); break;

                case FigureType.eight: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на восьмерку"); break;

                case FigureType.nine: botik.SendTextMessageAsync(message.Chat.Id, "Похоже на девятку"); break;

                default: botik.SendTextMessageAsync(message.Chat.Id, "Глаз замылился"); break;
                }
                string textresults = "";
                var    outputs     = perseptron.getOutput();
                textresults  = "Распознанная цифра: " + x.ToString() + "\r\n";
                textresults += " 0: " + outputs[0].ToString() + "\r\n";
                textresults += " 1: " + outputs[1].ToString() + "\r\n";
                textresults += " 2: " + outputs[2].ToString() + "\r\n";
                textresults += " 3: " + outputs[3].ToString() + "\r\n";
                textresults += " 4: " + outputs[4].ToString() + "\r\n";
                textresults += " 5: " + outputs[5].ToString() + "\r\n";
                textresults += " 6: " + outputs[6].ToString() + "\r\n";
                textresults += " 7: " + outputs[7].ToString() + "\r\n";
                textresults += " 8: " + outputs[8].ToString() + "\r\n";
                textresults += " 9: " + outputs[9].ToString() + "\r\n";
                formUpdater(textresults);
                //botik.SendPhotoAsync(message.Chat.Id, @"..\..\1.jpg");
                formUpdater("Picture recognized!");
                return;
            }
            else
            {
                if (message == null || message.Type != Telegram.Bot.Types.Enums.MessageType.Text)
                {
                    return;
                }
                if (message.Text == "Authors")
                {
                    string authors = "Гаянэ Аршакян, Луспарон Тызыхян, Дамир Казеев, Роман Хыдыров, Владимир Садовский, Анастасия Аскерова, Константин Бервинов, и Борис Трикоз (но он уже спать ушел) и молчаливый Даниил Ярошенко";
                    botik.SendTextMessageAsync(message.Chat.Id, "Авторы проекта : " + authors);
                }
                botik.SendTextMessageAsync(message.Chat.Id, mybot.Talk(message.Text));
                formUpdater(message.Text);
            }
            return;
        }