public override async Task<bool> Execute(Message message, TelegramBotClient botClient) { var endCommand = false; switch (_typeRequest) { case TypeRequest.Start: _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, Base.DEFAULT_MSG); break; case TypeRequest.Resource: var ret = ApiExplorer.Usage(PveHelper.GetClassApiRoot(PveHelper.GetClient()), message.Text.Trim(), ApiExplorer.OutputType.Html, true, null, true); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ret, "Usage.html"); endCommand = true; break; default: break; } return await Task.FromResult(endCommand); }
public override async Task <bool> Execute(Message message, TelegramBotClient botClient) { var endCommand = false; switch (_typeRequest) { case TypeRequest.Start: _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, "Insert <b>resource</b> (eg nodes)"); break; case TypeRequest.Resource: var ret = ApiExplorer.Usage(PveHelper.GetClassApiRoot(), message.Text.Trim(), true, null, true); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ret, "Usage.txt"); endCommand = true; break; default: break; } return(await Task.FromResult(endCommand)); }
public override async Task <bool> Execute(Message message, TelegramBotClient botClient) { await botClient.ChooseVmInlineKeyboard(message.Chat.Id, PveHelper.GetClient(), (StatusRequestVM == StatusEnum.Stop)); return(await Task.FromResult(false)); }
public override async Task <bool> Execute(Message message, CallbackQuery callbackQuery, TelegramBotClient botClient) { var action = (ForReboot ? "reboot" : "shutdown"); PveHelper.GetClient().Nodes[callbackQuery.Data].Status.NodeCmd(action); await botClient.SendTextMessageAsyncNoKeyboard(callbackQuery.Message.Chat.Id, $"Node {callbackQuery.Data} action {action}!"); return(await Task.FromResult(true)); }
public override async Task <bool> Execute(Message message, CallbackQuery callbackQuery, TelegramBotClient botClient) { var vm = PveHelper.GetClient().GetVM(callbackQuery.Data); vm.SetStatus(StatusRequestVM, 0); await botClient.SendTextMessageAsyncNoKeyboard(callbackQuery.Message.Chat.Id, $"VM/CT {vm.Id} on node {vm.Node} {StatusRequestVM}!"); return(await Task.FromResult(true)); }
public override async Task <bool> Execute(Message message, TelegramBotClient botClient) { await botClient.ChooseNodeInlineKeyboard(message.Chat.Id, PveHelper.GetClient(), true); return(await Task.FromResult(false)); }
private async Task <bool> ExecuteOrChoose(Message message, TelegramBotClient botClient) { var endCommand = false; var cmdArgs = ParserExtensions.Parse(new Parser(), _messageText).Tokens.Select(a => a.Value).ToList(); if (cmdArgs.Count == 0) { //request resource _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, DEFAULT_MSG); } else { var resource = cmdArgs[0]; if (!resource.StartsWith("/")) { resource = "/" + resource; } var requestArgs = StringHelper.GetArgumentTags(resource); var parameters = cmdArgs.Skip(1).ToArray(); var parametersArgs = parameters.SelectMany(a => StringHelper.GetArgumentTags(a)).ToList(); if (requestArgs.Count() > 0) { //fix request resource = resource.Substring(0, resource.IndexOf(StringHelper.CreateArgumentTag(requestArgs[0])) - 1); var pveClient = PveHelper.GetClient(); var(Values, Error) = ApiExplorer.ListValues(pveClient, PveHelper.GetClassApiRoot(pveClient), resource); if (!string.IsNullOrWhiteSpace(Error)) { //return error await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, Error); endCommand = true; } else { _typeRequest = TypeRequest.ArgResource; await botClient.ChooseInlineKeyboard(message.Chat.Id, $"Choose {requestArgs[0]}", Values.Select(a => ("", a.Value, a.Value))); } } else if (parametersArgs.Count() > 0) { //request parameter value _typeRequest = TypeRequest.ArgParameter; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, $"Insert value for parmater <b>{parametersArgs[0]}</b>"); } else if (requestArgs.Count() == 0) { var pveClient = PveHelper.GetClient(); //execute request var(ResultCode, ResultText) = ApiExplorer.Execute(pveClient, PveHelper.GetClassApiRoot(pveClient), resource, MethodType, ApiExplorer.CreateParameterResource(parameters), false, ApiExplorer.OutputType.Html); if (ResultCode != 200) { await botClient.SendTextMessageAsync(message.Chat.Id, $"Error: {ResultText}"); } else { var filename = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(resource).Replace("/", ""); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ResultText, $"{filename}.html"); } endCommand = true; } } if (endCommand) { _messageText = ""; } return(await Task.FromResult(endCommand)); }
public override async Task <bool> Execute(Message message, TelegramBotClient botClient) { var result = PveHelper.GetClient().Cluster.Resources.GetRest(Type); var returnParameters = PveHelper.GetClassApiReturnParameters(result.RequestResource); string GetDisk(IDictionary <string, object> item) => $"Disk: <b>{GetValue(item, "disk", returnParameters)}</b>" + $" of <b>{GetValue(item, "maxdisk", returnParameters)}</b>"; string GetMem(IDictionary <string, object> item) => $" - Mem: <b>{GetValue(item, "mem", returnParameters)}</b>" + $" of <b>{GetValue(item, "maxmem", returnParameters)}</b>"; string GetStatus(IDictionary <string, object> item) => $" - Status: <b>{GetValue(item, "status", returnParameters)}</b> ==="; string GetCpuUptime(IDictionary <string, object> item) => $"Cpu: <b>{GetValue(item, "cpu", returnParameters)}</b>" + $" of <b>{GetValue(item, "maxcpu", returnParameters)}</b>" + $" - Uptime: <b>{GetValue(item, "uptime", returnParameters)}</b>"; string GetId(IDictionary <string, object> item) => GetValue(item, "id", returnParameters); var text = ""; foreach (IDictionary <string, object> item in (IList)result.Response.data) { switch (item["type"] + "") { case "node": text += $"=== Node: <b>{GetId(item)}</b>" + GetStatus(item) + Environment.NewLine + GetCpuUptime(item) + Environment.NewLine + GetDisk(item) + GetMem(item) + Environment.NewLine; break; case "qemu": case "lxc": text += $"=== Id : <b>{GetValue(item, "node", returnParameters)}/{GetId(item)}</b>" + GetStatus(item) + Environment.NewLine + GetCpuUptime(item) + Environment.NewLine + GetDisk(item) + GetMem(item) + Environment.NewLine; break; case "storage": text += $"=== Id : <b>{GetId(item)}</b>" + GetStatus(item) + Environment.NewLine + GetDisk(item) + Environment.NewLine; break; default: break; } } await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, text); return(await Task.FromResult(true)); }