func settingsKeyboardPressed(c *integram.Context) error { cs := chatSettings(c) state := c.Callback.Message.InlineKeyboardMarkup.State if state == "categories" { state = c.Callback.Data } btns := integram.InlineButtons{} if c.Callback.Data == "back" { btns.Append("ci", "CI") btns.Append("mr", "Merge requests") state = "categories" } else if state == "mr" { btns.Append("back", "← Back") switch c.Callback.Data { case "open": cs.MR.Open = !stateToBool(c.Callback.State) case "close": cs.MR.Close = !stateToBool(c.Callback.State) case "update": cs.MR.Update = !stateToBool(c.Callback.State) case "merge": cs.MR.Merge = !stateToBool(c.Callback.State) } c.Chat.SaveSettings(cs) btns.AppendWithState(boolToState(cs.MR.Open), "open", boolToMark(cs.MR.Open)+"Open") btns.AppendWithState(boolToState(cs.MR.Update), "update", boolToMark(cs.MR.Update)+"Update") btns.AppendWithState(boolToState(cs.MR.Merge), "merge", boolToMark(cs.MR.Merge)+"Merge") btns.AppendWithState(boolToState(cs.MR.Close), "close", boolToMark(cs.MR.Close)+"Close") } else if state == "ci" { btns.Append("back", "← Back") switch c.Callback.Data { case "success": cs.CI.Success = !stateToBool(c.Callback.State) case "fail": cs.CI.Fail = !stateToBool(c.Callback.State) case "cancel": cs.CI.Cancel = !stateToBool(c.Callback.State) } c.Chat.SaveSettings(cs) btns.AppendWithState(boolToState(cs.CI.Success), "success", boolToMark(cs.CI.Success)+"Success") btns.AppendWithState(boolToState(cs.CI.Fail), "fail", boolToMark(cs.CI.Fail)+"Fail") btns.AppendWithState(boolToState(cs.CI.Cancel), "cancel", boolToMark(cs.CI.Cancel)+"Cancel") } return c.EditPressedInlineKeyboard(btns.Markup(1, state)) }