Изменено: обработка исключений в пакетах
This commit is contained in:
parent
e9cad18cb3
commit
106e6b98e8
10
main.go
10
main.go
|
@ -14,7 +14,10 @@ func main() {
|
||||||
log.Fatal("No .env file found")
|
log.Fatal("No .env file found")
|
||||||
}
|
}
|
||||||
|
|
||||||
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
engine, err := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
bot := new(tg.Bot)
|
bot := new(tg.Bot)
|
||||||
bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine)
|
bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine)
|
||||||
|
@ -25,7 +28,10 @@ func main() {
|
||||||
if update.Message != nil {
|
if update.Message != nil {
|
||||||
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
|
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
|
||||||
|
|
||||||
tg_user := bot.InitUser(update.Message)
|
tg_user, err := bot.InitUser(update.Message)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if tg_user.PosTag == "not_started" {
|
if tg_user.PosTag == "not_started" {
|
||||||
bot.Start()
|
bot.Start()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package database
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
@ -9,10 +8,10 @@ import (
|
||||||
"xorm.io/xorm/names"
|
"xorm.io/xorm/names"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Connect(user, pass, db string) *xorm.Engine {
|
func Connect(user, pass, db string) (*xorm.Engine, error) {
|
||||||
engine, err := xorm.NewEngine("mysql", user+":"+pass+"@tcp(localhost:3306)/"+db+"?charset=utf8")
|
engine, err := xorm.NewEngine("mysql", user+":"+pass+"@tcp(localhost:3306)/"+db+"?charset=utf8")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
engine.ShowSQL(true)
|
engine.ShowSQL(true)
|
||||||
|
@ -20,22 +19,22 @@ func Connect(user, pass, db string) *xorm.Engine {
|
||||||
|
|
||||||
err = engine.Sync(&User{}, &TgUser{}, &Group{}, &Lesson{})
|
err = engine.Sync(&User{}, &TgUser{}, &Group{}, &Lesson{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
return engine
|
return engine, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GenerateID(engine *xorm.Engine) int64 {
|
func GenerateID(engine *xorm.Engine) (int64, error) {
|
||||||
id := rand.Int63n(899999999) + 100000000
|
id := rand.Int63n(899999999) + 100000000
|
||||||
|
|
||||||
exists, err := engine.ID(id).Exist(&User{})
|
exists, err := engine.ID(id).Exist(&User{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if exists {
|
if exists {
|
||||||
return GenerateID(engine)
|
return GenerateID(engine)
|
||||||
} else {
|
} else {
|
||||||
return id
|
return id, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ func TestParse(t *testing.T) {
|
||||||
log.Fatal("No .env file found")
|
log.Fatal("No .env file found")
|
||||||
}
|
}
|
||||||
|
|
||||||
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
engine, err := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
||||||
err = uploadShedule(engine, *shedule)
|
err = uploadShedule(engine, *shedule)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
|
func (bot *Bot) InitUser(msg *tgbotapi.Message) (*database.TgUser, error) {
|
||||||
db := &bot.DB
|
db := &bot.DB
|
||||||
var users []database.TgUser
|
var users []database.TgUser
|
||||||
err := db.Find(&users, &database.TgUser{TgId: msg.Chat.ID})
|
err := db.Find(&users, &database.TgUser{TgId: msg.Chat.ID})
|
||||||
|
@ -17,7 +17,10 @@ func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
|
||||||
|
|
||||||
var tg_user database.TgUser
|
var tg_user database.TgUser
|
||||||
if len(users) == 0 {
|
if len(users) == 0 {
|
||||||
l9id := database.GenerateID(db)
|
l9id, err := database.GenerateID(db)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
user := database.User{
|
user := database.User{
|
||||||
L9Id: l9id,
|
L9Id: l9id,
|
||||||
|
@ -29,19 +32,19 @@ func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
|
||||||
TgId: msg.Chat.ID,
|
TgId: msg.Chat.ID,
|
||||||
PosTag: "not_started",
|
PosTag: "not_started",
|
||||||
}
|
}
|
||||||
_, err := db.Insert(user, tg_user)
|
_, err = db.Insert(user, tg_user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tg_user = users[0]
|
tg_user = users[0]
|
||||||
}
|
}
|
||||||
bot.TG_user = tg_user
|
bot.TG_user = tg_user
|
||||||
return &tg_user
|
return &tg_user, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bot *Bot) Start() {
|
func (bot *Bot) Start() {
|
||||||
bot.TG_user.PosTag = "started"
|
bot.TG_user.PosTag = "add"
|
||||||
_, err := bot.DB.Update(bot.TG_user)
|
_, err := bot.DB.Update(bot.TG_user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
Reference in New Issue