@@ -2,7 +2,10 @@ package settings
22
33import  (
44	"fmt" 
5+ 	"math" 
56	"sort" 
7+ 	"strconv" 
8+ 	"strings" 
69	"sync" 
710
811	"internal.kerygma.digital/kerygma-digital/biblebot/backend/models" 
@@ -27,7 +30,7 @@ func NewVersionCommandRouter() *VersionCommandRouter {
2730	versionOnce .Do (func () {
2831		versionInstance  =  & VersionCommandRouter {
2932			DefaultCommand : verDefault ,
30- 			Commands :       []models.Command {verSet , verSetServer },
33+ 			Commands :       []models.Command {verSet , verSetServer ,  verList },
3134		}
3235	})
3336
@@ -86,6 +89,8 @@ var verDefault = models.Command{
8689var  verSet  =  models.Command {
8790	Command : "set" ,
8891	Process : func (params  []string , ctx  * models.Context ) * models.CommandResponse  {
92+ 		lng  :=  ctx .Language 
93+ 
8994		var  idealVersion  models.Version 
9095		var  idealUser  models.UserPreference 
9196
@@ -106,10 +111,10 @@ var verSet = models.Command{
106111			}
107112
108113			response .OK  =  true 
109- 			response .Content  =  embedify .Embedify ("" , "+ version  set" ,  ctx . Language . GetString (ctx , "SetVersionSuccess" ,  nil ), false , "" )
114+ 			response .Content  =  embedify .Embedify ("" , lng . TranslatePlaceholdersInString ( ctx ,  "<+>< version> < set>" ),  lng . GetString (ctx , "SetVersionSuccess" ), false , "" )
110115		} else  {
111116			response .OK  =  false 
112- 			response .Content  =  embedify .Embedify ("" , "+ version  set" ,  ctx . Language . GetString (ctx , "SetVersionFail" , [] string { "<+>" ,  "<version>" ,  "<list>" } ), false , "" )
117+ 			response .Content  =  embedify .Embedify ("" , lng . TranslatePlaceholdersInString ( ctx ,  "<+>< version> < set>" ),  lng . GetString (ctx , "SetVersionFail" ), false , "" )
113118		}
114119
115120		return  & response 
@@ -119,6 +124,8 @@ var verSet = models.Command{
119124var  verSetServer  =  models.Command {
120125	Command : "setserver" ,
121126	Process : func (params  []string , ctx  * models.Context ) * models.CommandResponse  {
127+ 		lng  :=  ctx .Language 
128+ 
122129		var  idealVersion  models.Version 
123130		var  idealGuild  models.GuildPreference 
124131
@@ -139,10 +146,10 @@ var verSetServer = models.Command{
139146			}
140147
141148			response .OK  =  true 
142- 			response .Content  =  embedify .Embedify ("" , "+ version  setserver" ,  ctx . Language . GetString (ctx , "SetGuildVersionSuccess" ,  nil ), false , "" )
149+ 			response .Content  =  embedify .Embedify ("" , lng . TranslatePlaceholdersInString ( ctx ,  "<+>< version> < setserver>" ),  lng . GetString (ctx , "SetGuildVersionSuccess" ), false , "" )
143150		} else  {
144151			response .OK  =  false 
145- 			response .Content  =  embedify .Embedify ("" , "+ version  setserver" ,  ctx . Language . GetString (ctx , "SetGuildVersionFail" , [] string { "<+>" ,  "<version>" ,  "<list>" } ), false , "" )
152+ 			response .Content  =  embedify .Embedify ("" , lng . TranslatePlaceholdersInString ( ctx ,  "<+>< version> < setserver>" ),  lng . GetString (ctx , "SetGuildVersionFail" ), false , "" )
146153		}
147154
148155		return  & response 
@@ -160,19 +167,46 @@ var verList = models.Command{
160167			return  versions [i ].Name  <  versions [j ].Name 
161168		})
162169
163- 		/* var pages []string 
170+ 		var  pages  []* models. DiscordEmbed 
164171		var  maxResultsPerPage  =  25 
165172		var  versionsUsed  []models.Version 
166- 		totalPages := math.Ceil(len(versions) / maxResultsPerPage) 
173+ 		totalPages  :=  int ( math .Ceil (float64 ( len (versions ))  /  float64 ( maxResultsPerPage )) )
167174
168175		if  totalPages  ==  0  {
169176			totalPages  =  1 
170177		}
171178
172- 		for i := range totalPages { 
173- 			// TODO, finish this once languages are implemented 
174- 		}*/ 
179+ 		for  i  :=  0 ; i  <  totalPages ; i ++  {
180+ 			pageCounter  :=  ctx .Language .GetString (ctx , "PageOf" )
181+ 			pageCounter  =  strings .ReplaceAll (pageCounter , "<num>" , strconv .Itoa (i + 1 ))
182+ 			pageCounter  =  strings .ReplaceAll (pageCounter , "<total>" , strconv .Itoa (totalPages ))
183+ 
184+ 			title  :=  fmt .Sprintf ("%s - %s" , ctx .Language .TranslatePlaceholdersInString (ctx , "<+><version> <list>" ), pageCounter )
185+ 			embed  :=  embedify .Embedify ("" , title , "" , false , "" )
175186
176- 		return  & models.CommandResponse {}
187+ 			count  :=  0 
188+ 			versionList  :=  "" 
189+ 
190+ 			for  _ , version  :=  range  versions  {
191+ 				if  count  <  maxResultsPerPage  {
192+ 					if  ! slices .VersionInSlice (version , versionsUsed ) {
193+ 						versionList  +=  fmt .Sprintf ("%s\n " , version .Name )
194+ 
195+ 						versionsUsed  =  append (versionsUsed , version )
196+ 						versions  =  versions [1 :]
197+ 						count ++ 
198+ 					}
199+ 				}
200+ 			}
201+ 
202+ 			embed .Description  =  versionList 
203+ 			pages  =  append (pages , embed )
204+ 		}
205+ 
206+ 		return  & models.CommandResponse {
207+ 			OK :       true ,
208+ 			Language : & ctx .Language ,
209+ 			Pages :    pages ,
210+ 		}
177211	},
178212}
0 commit comments