Archived
1

Reflect latest game update

So, now we can handle 10th grade pokememes (and any two-digit grade pokememes in future).
Also, /best and /advice commands for 9th-level players respect new pokememes.
This commit is contained in:
Vladimir Hodakov 2018-03-31 09:16:32 +04:00
parent 93f2e7d818
commit dbaa85a517
6 changed files with 33 additions and 19 deletions

View File

@ -6,6 +6,11 @@ package appcontext
import ( import (
"bitbucket.org/pztrn/flagger" "bitbucket.org/pztrn/flagger"
"bitbucket.org/pztrn/mogrus" "bitbucket.org/pztrn/mogrus"
"github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/jmoiron/sqlx"
"github.com/robfig/cron"
"net/http"
"os"
"source.wtfteam.pro/i2_bot/i2_bot/lib/broadcaster/broadcasterinterface" "source.wtfteam.pro/i2_bot/i2_bot/lib/broadcaster/broadcasterinterface"
"source.wtfteam.pro/i2_bot/i2_bot/lib/chatter/chatterinterface" "source.wtfteam.pro/i2_bot/i2_bot/lib/chatter/chatterinterface"
"source.wtfteam.pro/i2_bot/i2_bot/lib/config" "source.wtfteam.pro/i2_bot/i2_bot/lib/config"
@ -23,11 +28,6 @@ import (
"source.wtfteam.pro/i2_bot/i2_bot/lib/talkers/talkersinterface" "source.wtfteam.pro/i2_bot/i2_bot/lib/talkers/talkersinterface"
"source.wtfteam.pro/i2_bot/i2_bot/lib/users/usersinterface" "source.wtfteam.pro/i2_bot/i2_bot/lib/users/usersinterface"
"source.wtfteam.pro/i2_bot/i2_bot/lib/welcomer/welcomerinterface" "source.wtfteam.pro/i2_bot/i2_bot/lib/welcomer/welcomerinterface"
"github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/jmoiron/sqlx"
"github.com/robfig/cron"
"net/http"
"os"
"time" "time"
) )
@ -62,7 +62,7 @@ func (c *Context) Init() {
l.Initialize() l.Initialize()
log := l.CreateLogger("i2_bot") log := l.CreateLogger("i2_bot")
log.CreateOutput("stdout", os.Stdout, true, "debug") log.CreateOutput("stdout", os.Stdout, true, "info")
c.Log = log c.Log = log
c.StartupFlags = flagger.New(c.Log) c.StartupFlags = flagger.New(c.Log)

View File

@ -43,6 +43,7 @@ func (dc *DataCache) loadPokememes() {
dc.pokememesMutex.Lock() dc.pokememesMutex.Lock()
dc.fullPokememesMutex.Lock() dc.fullPokememesMutex.Lock()
for i := range pokememes { for i := range pokememes {
c.Log.Debug("Loading pokememe with name: " + pokememes[i].Name)
dc.pokememes[pokememes[i].ID] = &pokememes[i] dc.pokememes[pokememes[i].ID] = &pokememes[i]
// Filling fullPokememes // Filling fullPokememes
@ -121,6 +122,7 @@ func (dc *DataCache) AddPokememe(pokememeData map[string]string, pokememeLocatio
} }
pokememe.ImageURL = pokememeData["image"] pokememe.ImageURL = pokememeData["image"]
pokememe.PlayerID = creatorID pokememe.PlayerID = creatorID
pokememe.IsActive = 1
pokememe.CreatedAt = time.Now().UTC() pokememe.CreatedAt = time.Now().UTC()
locations := []datamapping.Location{} locations := []datamapping.Location{}
@ -153,6 +155,7 @@ func (dc *DataCache) AddPokememe(pokememeData map[string]string, pokememeLocatio
insertedPokememe := dbmapping.Pokememe{} insertedPokememe := dbmapping.Pokememe{}
err = c.Db.Get(&insertedPokememe, c.Db.Rebind("SELECT * FROM pokememes WHERE grade=? AND name=?"), pokememe.Grade, pokememe.Name) err = c.Db.Get(&insertedPokememe, c.Db.Rebind("SELECT * FROM pokememes WHERE grade=? AND name=?"), pokememe.Grade, pokememe.Name)
if err != nil { if err != nil {
c.Log.Debug("Can't find newly added pokememe!")
return 0, err return 0, err
} }

View File

@ -4,8 +4,8 @@
package pokedexer package pokedexer
import ( import (
"source.wtfteam.pro/i2_bot/i2_bot/lib/dbmapping"
"sort" "sort"
"source.wtfteam.pro/i2_bot/i2_bot/lib/dbmapping"
"strconv" "strconv"
"strings" "strings"
) )
@ -40,14 +40,16 @@ func (p *Pokedexer) getAdvicePokememes(playerID int, adviceType string) ([]*dbma
} }
allPokememes := c.DataCache.GetAllPokememes() allPokememes := c.DataCache.GetAllPokememes()
for i := range allPokememes {
neededGrade := 0 neededGrade := 0
if profileRaw.LevelID < 9 { if profileRaw.LevelID < 10 {
neededGrade = profileRaw.LevelID + 1 neededGrade = profileRaw.LevelID + 1
} else { } else {
neededGrade = 9 neededGrade = 10
} }
c.Log.Debug("This player will search for grade: " + strconv.Itoa(neededGrade))
for i := range allPokememes {
if allPokememes[i].Pokememe.Grade == neededGrade { if allPokememes[i].Pokememe.Grade == neededGrade {
matchLeague := false matchLeague := false
if profileRaw.LevelID < 4 { if profileRaw.LevelID < 4 {

View File

@ -30,8 +30,17 @@ func (p *Pokedexer) ParsePokememe(update *tgbotapi.Update, playerRaw *dbmapping.
c.Log.Debug("Processing string: " + pokememeStringsArray[i]) c.Log.Debug("Processing string: " + pokememeStringsArray[i])
if strings.Contains(pokememeStringsArray[i], "⃣") { if strings.Contains(pokememeStringsArray[i], "⃣") {
// Strings with name and grade // Strings with name and grade
pokememeData["grade"] = string(pokememeRunesArray[i][0]) splitGradeAndName := strings.Split(string(pokememeRunesArray[i]), " ")
pokememeData["name"] = string(pokememeRunesArray[i][3:]) gradeNumberRegexp := regexp.MustCompile("[0-9]+")
pokememeData["grade"] = strings.Join(gradeNumberRegexp.FindAllString(splitGradeAndName[0], -1), "")
pokememeData["name"] = strings.Join(splitGradeAndName[1:], " ")
}
// Special case: "10" emoji
if strings.Contains(pokememeStringsArray[i], "🔟") {
// Strings with name and grade
pokememeData["grade"] = "10"
pokememeData["name"] = string(pokememeStringsArray[i][5:])
} }
if i == 1 { if i == 1 {

View File

@ -33,8 +33,8 @@ func (p *Pokedexer) pokememesListing(update *tgbotapi.Update, page int, pokememe
if (i+1 > 50*(page-1)) && (i+1 < (50*page)+1) { if (i+1 > 50*(page-1)) && (i+1 < (50*page)+1) {
pk := pokememesArray[i].Pokememe pk := pokememesArray[i].Pokememe
pkE := pokememesArray[i].Elements pkE := pokememesArray[i].Elements
message += strconv.Itoa(i+1) + ". " + strconv.Itoa(pk.Grade) message += strconv.Itoa(i+1) + ". *[" + strconv.Itoa(pk.Grade)
message += " *" + pk.Name message += "]* *" + pk.Name
message += "* (" + c.Statistics.GetPrintablePoints(pk.HP) + "-" + c.Statistics.GetPrintablePoints(pk.MP) + ") ⚔️ *" message += "* (" + c.Statistics.GetPrintablePoints(pk.HP) + "-" + c.Statistics.GetPrintablePoints(pk.MP) + ") ⚔️ *"
message += c.Statistics.GetPrintablePoints(pk.Attack) + "* \\[" message += c.Statistics.GetPrintablePoints(pk.Attack) + "* \\["
for j := range pkE { for j := range pkE {

View File

@ -42,7 +42,7 @@ func (p *Pokedexer) AdvicePokememesList(update *tgbotapi.Update, playerRaw *dbma
pk := pokememes[i].Pokememe pk := pokememes[i].Pokememe
pkL := pokememes[i].Locations pkL := pokememes[i].Locations
pkE := pokememes[i].Elements pkE := pokememes[i].Elements
message += strconv.Itoa(pk.Grade) + " " message += "*[" + strconv.Itoa(pk.Grade) + "]* "
message += pk.Name + " (⚔" message += pk.Name + " (⚔"
message += c.Statistics.GetPrintablePoints(pk.Attack) message += c.Statistics.GetPrintablePoints(pk.Attack)
message += ", 🛡" + c.Statistics.GetPrintablePoints(pk.Defence) + ")" message += ", 🛡" + c.Statistics.GetPrintablePoints(pk.Defence) + ")"
@ -118,7 +118,7 @@ func (p *Pokedexer) PokememeInfo(update *tgbotapi.Update, playerRaw *dbmapping.P
pk := pokememe.Pokememe pk := pokememe.Pokememe
message := strconv.Itoa(pk.Grade) + " *" + pk.Name + "*\n" message := "*[" + strconv.Itoa(pk.Grade) + "]* *" + pk.Name + "*\n"
message += pk.Description + "\n\n" message += pk.Description + "\n\n"
message += "Элементы:" message += "Элементы:"
for i := range pokememe.Elements { for i := range pokememe.Elements {