2023-02-22 17:23:38 +04:00
|
|
|
package tg
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
2023-03-08 10:43:04 +04:00
|
|
|
"strings"
|
2023-02-22 17:23:38 +04:00
|
|
|
|
|
|
|
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
2023-03-08 10:43:04 +04:00
|
|
|
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/ssau_parser"
|
2023-02-22 17:23:38 +04:00
|
|
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
2023-03-08 10:43:04 +04:00
|
|
|
"xorm.io/builder"
|
2023-02-22 17:23:38 +04:00
|
|
|
)
|
|
|
|
|
2023-03-07 13:38:50 +04:00
|
|
|
func (bot *Bot) InitUser(msg *tgbotapi.Message) (*database.TgUser, error) {
|
2023-02-22 17:23:38 +04:00
|
|
|
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 {
|
2023-03-07 13:38:50 +04:00
|
|
|
l9id, err := database.GenerateID(db)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2023-02-22 17:23:38 +04:00
|
|
|
|
|
|
|
user := database.User{
|
|
|
|
L9Id: l9id,
|
|
|
|
}
|
|
|
|
|
|
|
|
tg_user = database.TgUser{
|
|
|
|
L9Id: l9id,
|
|
|
|
Name: msg.From.UserName,
|
|
|
|
TgId: msg.Chat.ID,
|
|
|
|
PosTag: "not_started",
|
|
|
|
}
|
2023-03-07 13:38:50 +04:00
|
|
|
_, err = db.Insert(user, tg_user)
|
2023-02-22 17:23:38 +04:00
|
|
|
if err != nil {
|
2023-03-07 13:38:50 +04:00
|
|
|
return nil, err
|
2023-02-22 17:23:38 +04:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
tg_user = users[0]
|
|
|
|
}
|
|
|
|
bot.TG_user = tg_user
|
2023-03-07 13:38:50 +04:00
|
|
|
return &tg_user, nil
|
2023-02-22 17:23:38 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
func (bot *Bot) Start() {
|
2023-03-07 13:38:50 +04:00
|
|
|
bot.TG_user.PosTag = "add"
|
2023-02-22 17:23:38 +04:00
|
|
|
_, 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)
|
|
|
|
}
|
|
|
|
|
2023-03-08 10:43:04 +04:00
|
|
|
func (bot *Bot) Find(query string) {
|
|
|
|
var groups []database.Group
|
|
|
|
bot.DB.Where(builder.Like{"GroupName", query}).Find(&groups)
|
|
|
|
|
|
|
|
var teachers []database.Teacher
|
|
|
|
bot.DB.Where(builder.Like{"LastName", query}).Find(&teachers)
|
|
|
|
|
|
|
|
list, _ := ssau_parser.FindInRasp(query)
|
|
|
|
|
|
|
|
allGroups := groups
|
|
|
|
allTeachers := teachers
|
|
|
|
|
|
|
|
for _, elem := range list {
|
|
|
|
if strings.Contains(elem.Url, "group") {
|
|
|
|
exists := false
|
|
|
|
for _, group := range groups {
|
|
|
|
if elem.Id == group.GroupId {
|
|
|
|
exists = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if !exists {
|
|
|
|
allGroups = append(allGroups, database.Group{GroupId: elem.Id, GroupName: elem.Text})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if strings.Contains(elem.Url, "staff") {
|
|
|
|
exists := false
|
|
|
|
for _, teacher := range teachers {
|
|
|
|
if elem.Id == teacher.TeacherId {
|
|
|
|
exists = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if !exists {
|
|
|
|
name := strings.Split(elem.Text, " ")
|
|
|
|
allTeachers = append(allTeachers, database.Teacher{
|
|
|
|
TeacherId: elem.Id,
|
|
|
|
LastName: name[0],
|
|
|
|
FirstName: name[1],
|
|
|
|
MidName: name[2],
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(allGroups) != 0 {
|
|
|
|
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Many groups in base. Please sekect one")
|
|
|
|
msg.ReplyMarkup = GenerateKeyboard(GenerateGroupsArray(allGroups), query)
|
|
|
|
bot.TG.Send(msg)
|
|
|
|
} else if len(allTeachers) != 0 {
|
|
|
|
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Many teachers in base. Please sekect one")
|
|
|
|
msg.ReplyMarkup = GenerateKeyboard(GenerateTeachersArray(allTeachers), query)
|
|
|
|
bot.TG.Send(msg)
|
|
|
|
} else {
|
|
|
|
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Nothing found ):")
|
|
|
|
bot.TG.Send(msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-02-22 17:23:38 +04:00
|
|
|
func (bot *Bot) Etc() {
|
|
|
|
msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Oops!")
|
|
|
|
bot.TG.Send(msg)
|
|
|
|
}
|