Изменено: собщения выбора работают без тэгов
This commit is contained in:
parent
81b6e71a9d
commit
11db204ea1
|
@ -29,14 +29,14 @@ type Page struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Адрес основного сайта (прод или тестовый)
|
// Адрес основного сайта (прод или тестовый)
|
||||||
var headURL = "https://ssau.ru"
|
var HeadURL = "https://ssau.ru"
|
||||||
|
|
||||||
// Поиск расписания группы или преподавателя через ssau.ru/rasp/search
|
// Поиск расписания группы или преподавателя через ssau.ru/rasp/search
|
||||||
func SearchInRasp(query string) (SearchResults, error) {
|
func SearchInRasp(query string) (SearchResults, error) {
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
|
|
||||||
// Сначала заходим на сам сайт и получаем токены, чтобы нас посчитали человеком
|
// Сначала заходим на сам сайт и получаем токены, чтобы нас посчитали человеком
|
||||||
req, err := http.NewRequest("GET", headURL+"/rasp", nil)
|
req, err := http.NewRequest("GET", HeadURL+"/rasp", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func SearchInRasp(query string) (SearchResults, error) {
|
||||||
parm.Add("text", query)
|
parm.Add("text", query)
|
||||||
|
|
||||||
// Теперь можно обращаться к подобию API
|
// Теперь можно обращаться к подобию 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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ func DownloadShedule(uri string, week int) (Page, error) {
|
||||||
page.Week = week
|
page.Week = week
|
||||||
|
|
||||||
client := http.Client{}
|
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 {
|
if err != nil {
|
||||||
return page, err
|
return page, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ func TestSearchInRasp(t *testing.T) {
|
||||||
}
|
}
|
||||||
// Проверка ошибок на стороне сайта
|
// Проверка ошибок на стороне сайта
|
||||||
for _, url := range urls {
|
for _, url := range urls {
|
||||||
headURL = url
|
HeadURL = url
|
||||||
pingQuery(queries[0], t)
|
pingQuery(queries[0], t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ var weeks = []int{
|
||||||
|
|
||||||
func TestDownloadShedule(t *testing.T) {
|
func TestDownloadShedule(t *testing.T) {
|
||||||
// headURL = "https://ssau.ru"
|
// headURL = "https://ssau.ru"
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
for _, uri := range groupUri {
|
for _, uri := range groupUri {
|
||||||
for _, week := range weeks {
|
for _, week := range weeks {
|
||||||
if _, err := DownloadShedule(uri, week); err != nil {
|
if _, err := DownloadShedule(uri, week); err != nil {
|
||||||
|
@ -77,7 +77,7 @@ func TestDownloadShedule(t *testing.T) {
|
||||||
if _, err := DownloadSheduleById(59915001, false, 1); err != nil {
|
if _, err := DownloadSheduleById(59915001, false, 1); err != nil {
|
||||||
log.Println(err)
|
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 {
|
if _, err := DownloadSheduleById(59915001, false, 1); err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ func prepareDB() *xorm.Engine {
|
||||||
func TestCheckGroupOrTeacher(t *testing.T) {
|
func TestCheckGroupOrTeacher(t *testing.T) {
|
||||||
db := prepareDB()
|
db := prepareDB()
|
||||||
|
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
sh := WeekShedule{
|
sh := WeekShedule{
|
||||||
SheduleId: 802440189,
|
SheduleId: 802440189,
|
||||||
IsGroup: true,
|
IsGroup: true,
|
||||||
|
@ -61,7 +61,7 @@ func TestCheckGroupOrTeacher(t *testing.T) {
|
||||||
|
|
||||||
func TestUpdateSchedule(t *testing.T) {
|
func TestUpdateSchedule(t *testing.T) {
|
||||||
db := prepareDB()
|
db := prepareDB()
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
sh := WeekShedule{
|
sh := WeekShedule{
|
||||||
SheduleId: 802440189,
|
SheduleId: 802440189,
|
||||||
IsGroup: true,
|
IsGroup: true,
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestParse(t *testing.T) {
|
func TestParse(t *testing.T) {
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
sh := WeekShedule{
|
sh := WeekShedule{
|
||||||
SheduleId: 802440189,
|
SheduleId: 802440189,
|
||||||
IsGroup: true,
|
IsGroup: true,
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDownload(t *testing.T) {
|
func TestDownload(t *testing.T) {
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
sh := WeekShedule{}
|
sh := WeekShedule{}
|
||||||
err := sh.Download("/rasp?groupId=802440189", 4, false)
|
err := sh.Download("/rasp?groupId=802440189", 4, false)
|
||||||
handleError(err)
|
handleError(err)
|
||||||
|
@ -34,7 +34,7 @@ func TestDownload(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSheduleCompare(t *testing.T) {
|
func TestSheduleCompare(t *testing.T) {
|
||||||
headURL = "http://127.0.0.1:5000"
|
HeadURL = "http://127.0.0.1:5000"
|
||||||
sh := WeekShedule{
|
sh := WeekShedule{
|
||||||
SheduleId: 802440189,
|
SheduleId: 802440189,
|
||||||
IsGroup: true,
|
IsGroup: true,
|
||||||
|
|
|
@ -125,10 +125,22 @@ func (bot *Bot) HandleUpdate(update tgbotapi.Update) error {
|
||||||
err = bot.Start(user)
|
err = bot.Start(user)
|
||||||
case database.Ready:
|
case database.Ready:
|
||||||
err = bot.Find(user, msg.Text)
|
err = bot.Find(user, msg.Text)
|
||||||
|
default:
|
||||||
|
bot.Etc(user)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,23 +115,13 @@ func (bot *Bot) Find(user *database.TgUser, query string) error {
|
||||||
|
|
||||||
// Если получено несколько групп
|
// Если получено несколько групп
|
||||||
} else if len(allGroups) != 0 {
|
} 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 := tgbotapi.NewMessage(user.TgId, "Вот что я нашёл\nВыбери нужную группу")
|
||||||
msg.ReplyMarkup = GenerateKeyboard(GenerateGroupsArray(allGroups))
|
msg.ReplyMarkup = GenerateKeyboard(GenerateGroupsArray(allGroups, user.PosTag == database.Add))
|
||||||
bot.TG.Send(msg)
|
bot.TG.Send(msg)
|
||||||
// Если получено несколько преподавателей
|
// Если получено несколько преподавателей
|
||||||
} else if len(allTeachers) != 0 {
|
} 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 := tgbotapi.NewMessage(user.TgId, "Вот что я нашёл\nВыбери нужного преподавателя")
|
||||||
msg.ReplyMarkup = GenerateKeyboard(GenerateTeachersArray(allTeachers))
|
msg.ReplyMarkup = GenerateKeyboard(GenerateTeachersArray(allTeachers, user.PosTag == database.Add))
|
||||||
bot.TG.Send(msg)
|
bot.TG.Send(msg)
|
||||||
// Если ничего не получено
|
// Если ничего не получено
|
||||||
} else {
|
} else {
|
||||||
|
@ -262,6 +252,7 @@ func (bot *Bot) Find(user *database.TgUser, query string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
func (bot *Bot) Etc(user *database.TgUser) {
|
func (bot *Bot) Etc(user *database.TgUser) {
|
||||||
msg := tgbotapi.NewMessage(user.TgId, "Oй!")
|
msg := tgbotapi.NewMessage(user.TgId, "Oй!")
|
||||||
bot.TG.Send(msg)
|
bot.TG.Send(msg)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
"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"
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -85,8 +86,11 @@ func TestInitUser(t *testing.T) {
|
||||||
var dialog = []string{
|
var dialog = []string{
|
||||||
"/start",
|
"/start",
|
||||||
"2305",
|
"2305",
|
||||||
|
"Батурин",
|
||||||
|
"230",
|
||||||
"Балякин",
|
"Балякин",
|
||||||
//"230",
|
"aaa",
|
||||||
|
"aaa",
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHandleUpdate(t *testing.T) {
|
func TestHandleUpdate(t *testing.T) {
|
||||||
|
@ -99,7 +103,10 @@ func TestHandleUpdate(t *testing.T) {
|
||||||
From: &user,
|
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
|
update.Message.Text = query
|
||||||
err := bot.HandleUpdate(update)
|
err := bot.HandleUpdate(update)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -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
|
var grKeys []tgbotapi.InlineKeyboardButton
|
||||||
for _, gr := range groups {
|
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
|
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
|
var teacherKeys []tgbotapi.InlineKeyboardButton
|
||||||
for _, t := range teachers {
|
for _, t := range teachers {
|
||||||
name := fmt.Sprintf("%s %s", t.FirstName, t.ShortName)
|
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
|
return teacherKeys
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue