Esempio n. 1
0
        public void Simple()
        {
            var inputFilePath = Path.Combine(WorkDirecoryPath, "Images", "test.jpg");
            var messageDto    = new MessageDto
            {
                StrId                = Guid.NewGuid().ToString(),
                Text                 = Guid.NewGuid().ToString(),
                ImageBytes           = File.ReadAllBytes(inputFilePath),
                EditDate             = DateTime.Now,
                ForwardFromMessageId = 42,
                ChatId               = 411,
                CreateDate           = DateTime.Now,
                ForwardFromChatId    = 4444,
                ForwardFromChatName  = Guid.NewGuid().ToString(),
                ForwardFromUserId    = 3333,
                ForwardFromUserName  = Guid.NewGuid().ToString(),
                FromUserId           = 322,
                FromUserName         = Guid.NewGuid().ToString(),
                IntId                = 444556,
                MessageDate          = DateTime.Now,
                Timestamp            = DateTime.Now.Ticks
            };

            imageBayanService.SaveMessage(messageDto);

            var queryExecutor = queryExecutorFactory.Create <MessageHandler, MessageDbo>();
            var messageDbos   = queryExecutor.Execute(x => x.Select(new[] { messageDto.StrId }));

            Assert.NotEmpty(messageDbos);

            var actual = messageDbos.Single();

            AssertEqual(messageDto, actual);
        }
Esempio n. 2
0
        public void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            try
            {
                var message = messageEventArgs.Message;

                log.Info($"RecieveMessage {message.Chat.Id} {message.MessageId}");

                if (message?.Type != MessageType.Photo)
                {
                    return;
                }

                var photoSize = message?.Photo?.FirstOrDefault();

                if (photoSize == null)
                {
                    return;
                }

                var bytes = telegramClient.GetPhoto(photoSize.FileId);

                var messageDto = Convert(message, bytes);
                imageBayanService.SaveMessage(messageDto);

                log.Info($"SavedMessage {message.Chat.Id} {message.MessageId}");

                var bayanMetric = imageBayanService.GetBayanMetric(messageDto.StrId);

                log.Info($"GetBayanMetrics {bayanMetric.AlreadyWasCount} {message.Chat.Id} {message.MessageId}");

                if (bayanMetric.AlreadyWasCount > 0)
                {
                    var fromChatId = message.Chat.Id;
                    var sendChatId = long.TryParse(settings.SpecialForAnswersChatId, out var chatId)
                        ? chatId
                        : message.Chat.Id;

                    if (fromChatId == sendChatId)
                    {
                        client.SendTextMessageAsync(sendChatId, GetBayanMessage(bayanMetric), replyToMessageId: messageDto.IntId).GetAwaiter().GetResult();
                    }
                    else
                    {
                        client.ForwardMessageAsync(sendChatId, fromChatId, messageDto.IntId).GetAwaiter().GetResult();
                        client.SendTextMessageAsync(sendChatId, GetBayanMessage(bayanMetric)).GetAwaiter().GetResult();
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("BotDaemonException", e);
                Console.WriteLine($"BotDaemonException: {e.Message} {e.StackTrace}");
            }
        }