Archived
1

Pins to supergroups, managed by admins

This commit is contained in:
2017-11-14 03:44:21 +04:00
parent 5c08899d25
commit 95a9a2146a
84 changed files with 786 additions and 622 deletions

View File

@@ -4,11 +4,8 @@
package getters
import (
// stdlib
"log"
"time"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
"time"
)
// CreateBroadcastMessage creates broadcast message item in database
@@ -21,12 +18,12 @@ func (g *Getters) CreateBroadcastMessage(playerRaw *dbmapping.Player, messageBod
messageRaw.CreatedAt = time.Now().UTC()
_, err := c.Db.NamedExec("INSERT INTO broadcasts VALUES(NULL, :text, :broadcast_type, :status, :author_id, :created_at)", &messageRaw)
if err != nil {
log.Printf(err.Error())
c.Log.Error(err.Error())
return messageRaw, false
}
err2 := c.Db.Get(&messageRaw, c.Db.Rebind("SELECT * FROM broadcasts WHERE author_id=? AND text=?"), messageRaw.AuthorID, messageRaw.Text)
if err2 != nil {
log.Println(err2)
c.Log.Error(err2)
return messageRaw, false
}
@@ -38,7 +35,7 @@ func (g *Getters) GetBroadcastMessageByID(messageID int) (dbmapping.Broadcast, b
messageRaw := dbmapping.Broadcast{}
err := c.Db.Get(&messageRaw, c.Db.Rebind("SELECT * FROM broadcasts WHERE id=?"), messageID)
if err != nil {
log.Println(err)
c.Log.Error(err)
return messageRaw, false
}
@@ -50,18 +47,18 @@ func (g *Getters) UpdateBroadcastMessageStatus(messageID int, messageStatus stri
messageRaw := dbmapping.Broadcast{}
err := c.Db.Get(&messageRaw, c.Db.Rebind("SELECT * FROM broadcasts WHERE id=?"), messageID)
if err != nil {
log.Println(err)
c.Log.Error(err.Error())
return messageRaw, false
}
messageRaw.Status = messageStatus
_, err = c.Db.NamedExec("UPDATE broadcasts SET status=:status WHERE id=:id", &messageRaw)
if err != nil {
log.Printf(err.Error())
c.Log.Error(err.Error())
return messageRaw, false
}
err = c.Db.Get(&messageRaw, c.Db.Rebind("SELECT * FROM broadcasts WHERE author_id=? AND text=?"), messageRaw.AuthorID, messageRaw.Text)
if err != nil {
log.Println(err)
c.Log.Error(err.Error())
return messageRaw, false
}

View File

@@ -4,13 +4,9 @@
package getters
import (
// stdlib
"log"
"time"
// 3rd-party
"github.com/go-telegram-bot-api/telegram-bot-api"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
"time"
)
// GetChatByID returns dbmapping.Chat instance with given ID.
@@ -18,7 +14,7 @@ func (g *Getters) GetChatByID(chatID int64) (dbmapping.Chat, bool) {
chatRaw := dbmapping.Chat{}
err := c.Db.Get(&chatRaw, c.Db.Rebind("SELECT * FROM chats WHERE id=?"), chatID)
if err != nil {
log.Println(err)
c.Log.Error(err)
return chatRaw, false
}
@@ -29,11 +25,11 @@ func (g *Getters) GetChatByID(chatID int64) (dbmapping.Chat, bool) {
// In case, when there is no chat with such ID, new chat will be created.
func (g *Getters) GetOrCreateChat(telegramUpdate *tgbotapi.Update) (dbmapping.Chat, bool) {
chatRaw := dbmapping.Chat{}
log.Println("TGID: ", telegramUpdate.Message.Chat.ID)
c.Log.Debug("TGID: ", telegramUpdate.Message.Chat.ID)
err := c.Db.Get(&chatRaw, c.Db.Rebind("SELECT * FROM chats WHERE telegram_id=?"), telegramUpdate.Message.Chat.ID)
if err != nil {
log.Printf("Chat stream not found in database.")
log.Printf(err.Error())
c.Log.Error("Chat stream not found in database.")
c.Log.Error(err.Error())
nameOfChat := ""
if telegramUpdate.Message.Chat.FirstName != "" {
@@ -56,16 +52,16 @@ func (g *Getters) GetOrCreateChat(telegramUpdate *tgbotapi.Update) (dbmapping.Ch
chatRaw.CreatedAt = time.Now().UTC()
_, err = c.Db.NamedExec("INSERT INTO chats VALUES(NULL, :name, :chat_type, :telegram_id, :created_at)", &chatRaw)
if err != nil {
log.Printf(err.Error())
c.Log.Error(err.Error())
return chatRaw, false
}
err2 := c.Db.Get(&chatRaw, c.Db.Rebind("SELECT * FROM chats WHERE telegram_id=? AND chat_type=?"), chatRaw.TelegramID, chatRaw.ChatType)
if err2 != nil {
log.Println(err2)
c.Log.Error(err2)
return chatRaw, false
}
} else {
log.Printf("Chat stream found in database.")
c.Log.Info("Chat stream found in database.")
}
return chatRaw, true
@@ -77,7 +73,7 @@ func (g *Getters) GetAllPrivateChats() ([]dbmapping.Chat, bool) {
err := c.Db.Select(&privateChats, "SELECT * FROM chats WHERE chat_type='private'")
if err != nil {
log.Println(err)
c.Log.Error(err)
return privateChats, false
}
@@ -90,7 +86,7 @@ func (g *Getters) GetAllGroupChats() ([]dbmapping.Chat, bool) {
err := c.Db.Select(&groupChats, "SELECT * FROM chats WHERE chat_type IN ('group', 'supergroup')")
if err != nil {
log.Println(err)
c.Log.Error(err)
return groupChats, false
}
@@ -104,7 +100,7 @@ func (g *Getters) GetAllGroupChatsWithSquads() ([]dbmapping.SquadChat, bool) {
err := c.Db.Select(&groupChats, "SELECT * FROM chats WHERE chat_type IN ('group', 'supergroup')")
if err != nil {
log.Println(err)
c.Log.Error(err)
return chatsSquads, false
}
@@ -113,7 +109,7 @@ func (g *Getters) GetAllGroupChatsWithSquads() ([]dbmapping.SquadChat, bool) {
squad := dbmapping.Squad{}
err = c.Db.Select(&squad, c.Db.Rebind("SELECT * FROM squads WHERE chat_id="), groupChats[i].ID)
if err != nil {
log.Println(err)
c.Log.Debug(err)
chatSquad.IsSquad = false
} else {
chatSquad.IsSquad = true
@@ -129,11 +125,11 @@ func (g *Getters) GetAllGroupChatsWithSquads() ([]dbmapping.SquadChat, bool) {
}
// UpdateChatTitle updates chat title in database
func (g *Getters) UpdateChatTitle(chatRaw dbmapping.Chat, newTitle string) (dbmapping.Chat, bool) {
func (g *Getters) UpdateChatTitle(chatRaw *dbmapping.Chat, newTitle string) (*dbmapping.Chat, bool) {
chatRaw.Name = newTitle
_, err := c.Db.NamedExec("UPDATE chats SET name=:name WHERE id=:id", &chatRaw)
if err != nil {
log.Println(err)
c.Log.Error(err)
return chatRaw, false
}

View File

@@ -4,9 +4,6 @@
package getters
import (
// stdlib
"log"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/appcontext"
"lab.pztrn.name/fat0troll/i2_bot/lib/getters/gettersinterface"
)
@@ -27,5 +24,5 @@ func New(ac *appcontext.Context) {
// Init is a initialization function for package
func (g *Getters) Init() {
log.Printf("Initializing getters...")
c.Log.Info("Initializing getters...")
}

View File

@@ -4,9 +4,7 @@
package gettersinterface
import (
// 3rd-party
"github.com/go-telegram-bot-api/telegram-bot-api"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
)
@@ -21,7 +19,7 @@ type GettersInterface interface {
GetAllPrivateChats() ([]dbmapping.Chat, bool)
GetAllGroupChats() ([]dbmapping.Chat, bool)
GetAllGroupChatsWithSquads() ([]dbmapping.SquadChat, bool)
UpdateChatTitle(chatRaw dbmapping.Chat, newTitle string) (dbmapping.Chat, bool)
UpdateChatTitle(chatRaw *dbmapping.Chat, newTitle string) (*dbmapping.Chat, bool)
GetOrCreatePlayer(telegramID int) (dbmapping.Player, bool)
GetPlayerByID(playerID int) (dbmapping.Player, bool)
PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string) bool

View File

@@ -4,11 +4,8 @@
package getters
import (
// stdlib
"log"
"time"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
"time"
)
// GetPlayerByID returns dbmapping.Player instance with given ID.
@@ -16,7 +13,7 @@ func (g *Getters) GetPlayerByID(playerID int) (dbmapping.Player, bool) {
playerRaw := dbmapping.Player{}
err := c.Db.Get(&playerRaw, c.Db.Rebind("SELECT * FROM players WHERE id=?"), playerID)
if err != nil {
log.Println(err)
c.Log.Error(err.Error())
return playerRaw, false
}
@@ -29,8 +26,8 @@ func (g *Getters) GetOrCreatePlayer(telegramID int) (dbmapping.Player, bool) {
playerRaw := dbmapping.Player{}
err := c.Db.Get(&playerRaw, c.Db.Rebind("SELECT * FROM players WHERE telegram_id=?"), telegramID)
if err != nil {
log.Printf("Message user not found in database.")
log.Printf(err.Error())
c.Log.Error("Message user not found in database.")
c.Log.Error(err.Error())
// Create "nobody" user
playerRaw.TelegramID = telegramID
@@ -40,11 +37,11 @@ func (g *Getters) GetOrCreatePlayer(telegramID int) (dbmapping.Player, bool) {
playerRaw.UpdatedAt = time.Now().UTC()
_, err = c.Db.NamedExec("INSERT INTO players VALUES(NULL, :telegram_id, :league_id, :status, :created_at, :updated_at)", &playerRaw)
if err != nil {
log.Printf(err.Error())
c.Log.Error(err.Error())
return playerRaw, false
}
} else {
log.Printf("Message user found in database.")
c.Log.Debug("Message user found in database.")
}
return playerRaw, true

View File

@@ -4,11 +4,8 @@
package getters
import (
// stdlib
"log"
"strconv"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
"strconv"
)
// Internal functions
@@ -18,25 +15,25 @@ func (g *Getters) formFullPokememes(pokememes []dbmapping.Pokememe) ([]dbmapping
elements := []dbmapping.Element{}
err := c.Db.Select(&elements, "SELECT * FROM elements")
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
locations := []dbmapping.Location{}
err = c.Db.Select(&locations, "SELECT * FROM locations")
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
pokememesElements := []dbmapping.PokememeElement{}
err = c.Db.Select(&pokememesElements, "SELECT * FROM pokememes_elements")
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
pokememesLocations := []dbmapping.PokememeLocation{}
err = c.Db.Select(&pokememesLocations, "SELECT * FROM pokememes_locations")
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
@@ -83,7 +80,7 @@ func (g *Getters) GetPokememes() ([]dbmapping.PokememeFull, bool) {
pokememes := []dbmapping.Pokememe{}
err := c.Db.Select(&pokememes, "SELECT * FROM pokememes ORDER BY grade asc, name asc")
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
@@ -111,7 +108,7 @@ func (g *Getters) GetBestPokememes(playerID int) ([]dbmapping.PokememeFull, bool
pokememes := []dbmapping.Pokememe{}
err := c.Db.Select(&pokememes, c.Db.Rebind("SELECT p.* FROM pokememes p, pokememes_elements pe, elements e WHERE e.league_id = ? AND p.grade = ? AND pe.element_id = e.id AND pe.pokememe_id = p.id ORDER BY p.attack DESC"), playerRaw.LeagueID, profileRaw.LevelID+1)
if err != nil {
log.Println(err)
c.Log.Error(err)
return pokememesArray, false
}
@@ -125,31 +122,31 @@ func (g *Getters) GetPokememeByID(pokememeID string) (dbmapping.PokememeFull, bo
pokememe := dbmapping.Pokememe{}
err := c.Db.Get(&pokememe, c.Db.Rebind("SELECT * FROM pokememes WHERE id=?"), pokememeID)
if err != nil {
log.Println(err)
c.Log.Error(err)
return fullPokememe, false
}
elements := []dbmapping.Element{}
err = c.Db.Select(&elements, "SELECT * FROM elements")
if err != nil {
log.Println(err)
c.Log.Error(err)
return fullPokememe, false
}
locations := []dbmapping.Location{}
err = c.Db.Select(&locations, "SELECT * FROM locations")
if err != nil {
log.Println(err)
c.Log.Error(err)
return fullPokememe, false
}
pokememesElements := []dbmapping.PokememeElement{}
err = c.Db.Select(&pokememesElements, "SELECT * FROM pokememes_elements WHERE pokememe_id='"+strconv.Itoa(pokememe.ID)+"'")
if err != nil {
log.Println(err)
c.Log.Error(err)
return fullPokememe, false
}
pokememesLocations := []dbmapping.PokememeLocation{}
err = c.Db.Select(&pokememesLocations, "SELECT * FROM pokememes_locations WHERE pokememe_id='"+strconv.Itoa(pokememe.ID)+"'")
if err != nil {
log.Println(err)
c.Log.Error(err)
return fullPokememe, false
}

View File

@@ -3,11 +3,6 @@
package getters
import (
// stdlib
"log"
)
// PossibilityRequiredPokeballs returns possibility of catching pokememe
// It's based on location, grade of pokememe and current level of player
func (g *Getters) PossibilityRequiredPokeballs(location int, grade int, lvl int) (float64, int) {
@@ -69,7 +64,7 @@ func (g *Getters) PossibilityRequiredPokeballs(location int, grade int, lvl int)
err := c.Db.Get(&pokememesCount, c.Db.Rebind("SELECT count(*) FROM pokememes p, pokememes_locations pl WHERE p.grade = ? AND pl.location_id = ? AND pl.pokememe_id = p.id;"), grade, location)
if err != nil {
log.Println(err)
c.Log.Error(err)
}
if basePossibility != 0 && pokememesCount != 0 {

View File

@@ -4,9 +4,6 @@
package getters
import (
// stdlib
"log"
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
)
@@ -15,7 +12,7 @@ func (g *Getters) GetProfile(playerID int) (dbmapping.Profile, bool) {
profileRaw := dbmapping.Profile{}
err := c.Db.Get(&profileRaw, c.Db.Rebind("SELECT * FROM profiles WHERE player_id=? ORDER BY created_at DESC LIMIT 1"), playerID)
if err != nil {
log.Println(err)
c.Log.Error(err)
return profileRaw, false
}