Изменено: вынесен бэкенд Telegram
This commit is contained in:
parent
8241500df1
commit
d9c869a854
57
main.go
57
main.go
|
@ -5,7 +5,7 @@ import (
|
|||
"os"
|
||||
|
||||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/tg"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
|
@ -16,62 +16,21 @@ func main() {
|
|||
|
||||
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
||||
|
||||
bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_APITOKEN"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
bot.Debug = true
|
||||
bot := new(tg.Bot)
|
||||
bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine)
|
||||
|
||||
log.Printf("Authorized on account %s", bot.Self.UserName)
|
||||
updates := bot.GetUpdates()
|
||||
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates := bot.GetUpdatesChan(u)
|
||||
|
||||
for update := range updates {
|
||||
for update := range *updates {
|
||||
if update.Message != nil {
|
||||
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
|
||||
|
||||
var users []database.TgUser
|
||||
err := engine.Find(&users, &database.TgUser{TgId: update.Message.Chat.ID})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var tg_user database.TgUser
|
||||
if len(users) == 0 {
|
||||
l9id := database.GenerateID(engine)
|
||||
|
||||
user := database.User{
|
||||
L9Id: l9id,
|
||||
}
|
||||
|
||||
tg_user = database.TgUser{
|
||||
L9Id: l9id,
|
||||
Name: update.Message.From.UserName,
|
||||
TgId: update.Message.Chat.ID,
|
||||
PosTag: "not_started",
|
||||
}
|
||||
_, err := engine.Insert(user, tg_user)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
} else {
|
||||
tg_user = users[0]
|
||||
}
|
||||
tg_user := bot.InitUser(update.Message)
|
||||
|
||||
if tg_user.PosTag == "not_started" {
|
||||
tg_user.PosTag = "started"
|
||||
_, err := engine.Update(tg_user)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Hello!")
|
||||
bot.Send(msg)
|
||||
bot.Start()
|
||||
} else {
|
||||
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Oops!")
|
||||
bot.Send(msg)
|
||||
bot.Etc()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package tg
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
type Bot struct {
|
||||
TG *tgbotapi.BotAPI
|
||||
DB xorm.Engine
|
||||
TG_user database.TgUser
|
||||
}
|
||||
|
||||
func (bot *Bot) InitBot(token string, engine xorm.Engine) {
|
||||
var err error
|
||||
bot.TG, err = tgbotapi.NewBotAPI(token)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
bot.TG.Debug = true
|
||||
|
||||
bot.DB = engine
|
||||
|
||||
log.Printf("Authorized on account %s", bot.TG.Self.UserName)
|
||||
}
|
||||
|
||||
func (bot *Bot) GetUpdates() *tgbotapi.UpdatesChannel {
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates := bot.TG.GetUpdatesChan(u)
|
||||
return &updates
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package tg
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
)
|
||||
|
||||
func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
|
||||
db := &bot.DB
|
||||
var users []database.TgUser
|
||||
err := db.Find(&users, &database.TgUser{TgId: msg.Chat.ID})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var tg_user database.TgUser
|
||||
if len(users) == 0 {
|
||||
l9id := database.GenerateID(db)
|
||||
|
||||
user := database.User{
|
||||
L9Id: l9id,
|
||||
}
|
||||
|
||||
tg_user = database.TgUser{
|
||||
L9Id: l9id,
|
||||
Name: msg.From.UserName,
|
||||
TgId: msg.Chat.ID,
|
||||
PosTag: "not_started",
|
||||
}
|
||||
_, err := db.Insert(user, tg_user)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
} else {
|
||||
tg_user = users[0]
|
||||
}
|
||||
bot.TG_user = tg_user
|
||||
return &tg_user
|
||||
}
|
||||
|
||||
func (bot *Bot) Start() {
|
||||
bot.TG_user.PosTag = "started"
|
||||
_, err := bot.DB.Update(bot.TG_user)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Hello!")
|
||||
bot.TG.Send(msg)
|
||||
}
|
||||
|
||||
func (bot *Bot) Etc() {
|
||||
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Oops!")
|
||||
bot.TG.Send(msg)
|
||||
}
|
Reference in New Issue