Изменено: собщения выбора работают без тэгов

This commit is contained in:
far-galaxy 2023-08-03 13:39:59 +04:00
parent 81b6e71a9d
commit 11db204ea1
9 changed files with 46 additions and 30 deletions

View File

@ -29,14 +29,14 @@ type Page struct {
}
// Адрес основного сайта (прод или тестовый)
var headURL = "https://ssau.ru"
var HeadURL = "https://ssau.ru"
// Поиск расписания группы или преподавателя через ssau.ru/rasp/search
func SearchInRasp(query string) (SearchResults, error) {
client := http.Client{}
// Сначала заходим на сам сайт и получаем токены, чтобы нас посчитали человеком
req, err := http.NewRequest("GET", headURL+"/rasp", nil)
req, err := http.NewRequest("GET", HeadURL+"/rasp", nil)
if err != nil {
return nil, err
}
@ -60,7 +60,7 @@ func SearchInRasp(query string) (SearchResults, error) {
parm.Add("text", query)
// Теперь можно обращаться к подобию API
req, err = http.NewRequest("POST", headURL+"/rasp/search", strings.NewReader(parm.Encode()))
req, err = http.NewRequest("POST", HeadURL+"/rasp/search", strings.NewReader(parm.Encode()))
if err != nil {
return nil, err
}
@ -112,7 +112,7 @@ func DownloadShedule(uri string, week int) (Page, error) {
page.Week = week
client := http.Client{}
req, err := http.NewRequest("GET", fmt.Sprintf("%s%s&selectedWeek=%d", headURL, uri, week), nil)
req, err := http.NewRequest("GET", fmt.Sprintf("%s%s&selectedWeek=%d", HeadURL, uri, week), nil)
if err != nil {
return page, err
}

View File

@ -35,7 +35,7 @@ func TestSearchInRasp(t *testing.T) {
}
// Проверка ошибок на стороне сайта
for _, url := range urls {
headURL = url
HeadURL = url
pingQuery(queries[0], t)
}
}
@ -63,7 +63,7 @@ var weeks = []int{
func TestDownloadShedule(t *testing.T) {
// headURL = "https://ssau.ru"
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
for _, uri := range groupUri {
for _, week := range weeks {
if _, err := DownloadShedule(uri, week); err != nil {
@ -77,7 +77,7 @@ func TestDownloadShedule(t *testing.T) {
if _, err := DownloadSheduleById(59915001, false, 1); err != nil {
log.Println(err)
}
headURL = "http://127.0.0.1:5000/oops/"
HeadURL = "http://127.0.0.1:5000/oops/"
if _, err := DownloadSheduleById(59915001, false, 1); err != nil {
log.Println(err)
}

View File

@ -33,7 +33,7 @@ func prepareDB() *xorm.Engine {
func TestCheckGroupOrTeacher(t *testing.T) {
db := prepareDB()
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
sh := WeekShedule{
SheduleId: 802440189,
IsGroup: true,
@ -61,7 +61,7 @@ func TestCheckGroupOrTeacher(t *testing.T) {
func TestUpdateSchedule(t *testing.T) {
db := prepareDB()
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
sh := WeekShedule{
SheduleId: 802440189,
IsGroup: true,

View File

@ -6,7 +6,7 @@ import (
)
func TestParse(t *testing.T) {
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
sh := WeekShedule{
SheduleId: 802440189,
IsGroup: true,

View File

@ -6,7 +6,7 @@ import (
)
func TestDownload(t *testing.T) {
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
sh := WeekShedule{}
err := sh.Download("/rasp?groupId=802440189", 4, false)
handleError(err)
@ -34,7 +34,7 @@ func TestDownload(t *testing.T) {
}
func TestSheduleCompare(t *testing.T) {
headURL = "http://127.0.0.1:5000"
HeadURL = "http://127.0.0.1:5000"
sh := WeekShedule{
SheduleId: 802440189,
IsGroup: true,

View File

@ -125,10 +125,22 @@ func (bot *Bot) HandleUpdate(update tgbotapi.Update) error {
err = bot.Start(user)
case database.Ready:
err = bot.Find(user, msg.Text)
default:
bot.Etc(user)
}
if err != nil {
return err
}
}
if update.CallbackQuery != nil {
query := update.CallbackQuery
user, err := InitUser(bot.DB, query.From)
if err != nil {
return err
}
bot.Debug.Printf("Callback [%d] <%s> %s", user.L9Id, user.Name, query.Data)
callback := tgbotapi.NewCallback(query.ID, query.Data)
bot.TG.Request(callback)
}
return nil
}

View File

@ -115,23 +115,13 @@ func (bot *Bot) Find(user *database.TgUser, query string) error {
// Если получено несколько групп
} else if len(allGroups) != 0 {
if user.PosTag == database.Add {
user.PosTag = database.SelAddGroup
} else {
user.PosTag = database.SelSeeGroup
}
msg := tgbotapi.NewMessage(user.TgId, "Вот что я нашёл\nВыбери нужную группу")
msg.ReplyMarkup = GenerateKeyboard(GenerateGroupsArray(allGroups))
msg.ReplyMarkup = GenerateKeyboard(GenerateGroupsArray(allGroups, user.PosTag == database.Add))
bot.TG.Send(msg)
// Если получено несколько преподавателей
} else if len(allTeachers) != 0 {
if user.PosTag == database.Add {
user.PosTag = database.SelAddStaff
} else {
user.PosTag = database.SelSeeStaff
}
msg := tgbotapi.NewMessage(user.TgId, "Вот что я нашёл\nВыбери нужного преподавателя")
msg.ReplyMarkup = GenerateKeyboard(GenerateTeachersArray(allTeachers))
msg.ReplyMarkup = GenerateKeyboard(GenerateTeachersArray(allTeachers, user.PosTag == database.Add))
bot.TG.Send(msg)
// Если ничего не получено
} else {
@ -262,6 +252,7 @@ func (bot *Bot) Find(user *database.TgUser, query string) error {
return nil
}
*/
func (bot *Bot) Etc(user *database.TgUser) {
msg := tgbotapi.NewMessage(user.TgId, "Oй!")
bot.TG.Send(msg)

View File

@ -7,6 +7,7 @@ import (
"testing"
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/ssau_parser"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
@ -85,8 +86,11 @@ func TestInitUser(t *testing.T) {
var dialog = []string{
"/start",
"2305",
"Батурин",
"230",
"Балякин",
//"230",
"aaa",
"aaa",
}
func TestHandleUpdate(t *testing.T) {
@ -99,7 +103,10 @@ func TestHandleUpdate(t *testing.T) {
From: &user,
},
}
for _, query := range dialog {
for i, query := range dialog {
if i == len(dialog)-1 {
ssau_parser.HeadURL = "https://sasau.ru"
}
update.Message.Text = query
err := bot.HandleUpdate(update)
if err != nil {

View File

@ -10,10 +10,13 @@ import (
)
// Создание ряда кнопок из списка групп
func GenerateGroupsArray(groups []database.Group) []tgbotapi.InlineKeyboardButton {
func GenerateGroupsArray(groups []database.Group, isAdd bool) []tgbotapi.InlineKeyboardButton {
var grKeys []tgbotapi.InlineKeyboardButton
for _, gr := range groups {
grKeys = append(grKeys, tgbotapi.NewInlineKeyboardButtonData(gr.GroupName, strconv.FormatInt(gr.GroupId, 10)))
grKeys = append(grKeys, tgbotapi.NewInlineKeyboardButtonData(
gr.GroupName,
fmt.Sprintf("%t_group_%d", isAdd, gr.GroupId),
))
}
return grKeys
}
@ -28,11 +31,14 @@ func GenerateName(t database.Teacher) string {
}
// Создание ряда кнопок из списка преподавателей
func GenerateTeachersArray(teachers []database.Teacher) []tgbotapi.InlineKeyboardButton {
func GenerateTeachersArray(teachers []database.Teacher, isAdd bool) []tgbotapi.InlineKeyboardButton {
var teacherKeys []tgbotapi.InlineKeyboardButton
for _, t := range teachers {
name := fmt.Sprintf("%s %s", t.FirstName, t.ShortName)
teacherKeys = append(teacherKeys, tgbotapi.NewInlineKeyboardButtonData(name, strconv.FormatInt(t.TeacherId, 10)))
teacherKeys = append(teacherKeys, tgbotapi.NewInlineKeyboardButtonData(
name,
fmt.Sprintf("%t_staff_%d", isAdd, t.TeacherId),
))
}
return teacherKeys
}