using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Args; using Telegram.Bot.Types.ReplyMarkups; using ZaoBot.OpenHab; namespace ZaoBot { class StatusMenuUserState : IUserState { public const string CMD_BACK = "Назад"; ITelegramBotClient botClient; private JsonDocument config; HttpClient http = new HttpClient(); OpenHabClient openhab; public StatusMenuUserState(ITelegramBotClient botClient, JsonDocument config, OpenHabClient openhab) { this.botClient = botClient; this.config = config; this.openhab = openhab; } public async Task ProcessMessage(IUserState previous, Telegram.Bot.Types.Update e) { var response = ""; if (previous != this) { response = "Возможные проблемы:\n"; var items = await openhab.GetItems(); foreach (var item in items) { if (!item.name.StartsWith("Problem_")) continue; response += item.label + ": "; var state = await openhab.GetItemState(item.name); if (state.state == "OFF") response += "OK"; else if (state.state == "ON") response += "PROBLEM!"; else response += "UNKNOWN"; response += "\n"; } } else if (e.Message.Text == CMD_BACK) { var newState = new MainMenuUserState(botClient, config, openhab); await newState.ProcessMessage(this, e); return newState; } else { response = "Я не понял"; } var replyKeyboardMarkup = new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { CMD_BACK }, } ); await botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: response, replyMarkup: replyKeyboardMarkup ); return this; } } }