Beispiel #1
0
        public async Task <bool> QuerySheetAsync(int linkedMessageId, string callbackQueryId, int chatId, int scale)
        {
            var coordinates = await _amazonDynamoDbService.QueryAsync(chatId);

            var sheets = _sheetService.GetSheetsByCoordinate(coordinates.lat, coordinates.lon, scale).ToList();

            if (!sheets.Any())
            {
                return(false);
            }

            var deleteMessage = new TelegramDeleteMessage
            {
                ChatId    = chatId,
                MessageId = linkedMessageId
            };
            await _telegramService.DeleteMessage(deleteMessage);

            var answerCallbackQuery = new AnswerCallbackQuery
            {
                CallbackQueryId = callbackQueryId,
                Text            = "Sorgu tamamlandı."
            };

            await _telegramService.AnswerCallbackQuery(answerCallbackQuery);

            string messageText;

            if (sheets.Count() > 1)
            {
                messageText = "Birden fazla pafta ile kesişiyor:";
                foreach (var sheetDto in sheets)
                {
                    messageText += "\n" + sheetDto.Name;
                }
            }
            else
            {
                messageText = sheets.FirstOrDefault().Name;
            }

            messageText += $"\nÖlçek: 1:{scale}.000";
            messageText += $"\nKoordinatlar: {coordinates.lat:F6}, {coordinates.lon:F6}";

            var message = new TelegramMessage
            {
                ChatId = chatId.ToString(),
                Text   = messageText
            };

            return(await _telegramService.SendMessage(message));
        }
Beispiel #2
0
        public async Task AnswerCallbackQuery(AnswerCallbackQuery answerCallbackQuery)
        {
            var httpContent = new StringContent(JsonConvert.SerializeObject(answerCallbackQuery, _ignoreNullSerializer),
                                                Encoding.UTF8,
                                                "application/json");
            var responseMessage =
                await _httpClient.PostAsync($"{_httpClient.BaseAddress}{_settings.BotKey}/answerCallbackQuery",
                                            httpContent);

            var responseContent = await responseMessage.Content.ReadAsStringAsync();

            if (!responseMessage.IsSuccessStatusCode)
            {
                // todo: how to handle errors?
                _logger.LogError($"Failed {responseMessage.StatusCode} - {responseContent}");
            }
        }
Beispiel #3
0
        public async Task <bool> AnswerCallbackQuery(AnswerCallbackQuery answerCallbackQuery)
        {
            var url     = $"{TelegramApiUrl}/bot{_apiToken}/answerCallbackQuery";
            var content = new StringContent(JsonConvert.SerializeObject(answerCallbackQuery, new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            }), Encoding.UTF8, "application/json");

            using HttpClient client            = new HttpClient();
            using HttpResponseMessage response = await client.PostAsync(url, content);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception(await response.Content.ReadAsStringAsync());
            }
            return(true);
        }
Beispiel #4
0
        public async Task <bool> SetMagnitudeAsync(int linkedMessageId, string callbackQueryId, int chatId, double magnitude)
        {
            var updateRequest = _updateRequestBuilder
                                .CreateRequest(chatId)
                                .SetMagnitude(magnitude)
                                .Build();

            var updateResult = await _subscribtionStore.UpdateAsync(updateRequest);

            if (!updateResult)
            {
                return(false);
            }

            var deleteMessage = new TelegramDeleteMessage
            {
                ChatId    = chatId,
                MessageId = linkedMessageId
            };
            await _telegramService.DeleteMessage(deleteMessage);

            var answerCallbackQuery = new AnswerCallbackQuery
            {
                CallbackQueryId = callbackQueryId,
                Text            = string.Format(BotDialog.REPLY_MAGNITUDE, magnitude)
            };
            await _telegramService.AnswerCallbackQuery(answerCallbackQuery);

            var message = new TelegramMessage
            {
                ChatId = chatId.ToString(),
                Text   = string.Format(BotDialog.REPLY_MAGNITUDE, magnitude)
            };

            return(await _telegramService.SendMessage(message));
        }
 public static ValidationResult <AnswerCallbackQuery> CreateValidation(this AnswerCallbackQuery value) =>
 new ValidationResult <AnswerCallbackQuery>(value).ValidateRequired(x => x.CallbackQueryId);