feat: Added telegram message sending
This commit is contained in:
@ -1,12 +1,21 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
"git.inkling.su/mrqiz/schedule-poll/internal/config"
|
"git.inkling.su/mrqiz/schedule-poll/internal/config"
|
||||||
"git.inkling.su/mrqiz/schedule-poll/internal/schedule"
|
"git.inkling.su/mrqiz/schedule-poll/internal/schedule"
|
||||||
|
"git.inkling.su/mrqiz/schedule-poll/internal/telegram"
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
err := telegram.GetMe()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln("Unable to connect to telegram", err)
|
||||||
|
}
|
||||||
|
|
||||||
c := cron.New(cron.WithSeconds())
|
c := cron.New(cron.WithSeconds())
|
||||||
c.AddFunc(config.AppConfig.CronPattern, schedule.PollSchedule)
|
c.AddFunc(config.AppConfig.CronPattern, schedule.PollSchedule)
|
||||||
c.Run()
|
c.Run()
|
||||||
|
|||||||
@ -8,7 +8,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type config struct {
|
type config struct {
|
||||||
TelegramBotToken string
|
Telegram struct {
|
||||||
|
Token string
|
||||||
|
ChatId string
|
||||||
|
}
|
||||||
Schedule struct {
|
Schedule struct {
|
||||||
BaseUrl string
|
BaseUrl string
|
||||||
FacultyId string
|
FacultyId string
|
||||||
@ -32,6 +35,7 @@ func init() {
|
|||||||
AppConfig.Schedule.FacultyId = os.Getenv("SCHEDULE_FACULTY_ID")
|
AppConfig.Schedule.FacultyId = os.Getenv("SCHEDULE_FACULTY_ID")
|
||||||
AppConfig.Schedule.GroupId = os.Getenv("SCHEDULE_GROUP_ID")
|
AppConfig.Schedule.GroupId = os.Getenv("SCHEDULE_GROUP_ID")
|
||||||
AppConfig.Schedule.StartDate = os.Getenv("SCHEDULE_START_DATE")
|
AppConfig.Schedule.StartDate = os.Getenv("SCHEDULE_START_DATE")
|
||||||
AppConfig.TelegramBotToken = os.Getenv("SCHEDULE_TELEGRAM_TOKEN")
|
AppConfig.Telegram.Token = os.Getenv("SCHEDULE_TELEGRAM_TOKEN")
|
||||||
|
AppConfig.Telegram.ChatId = os.Getenv("SCHEDULE_TELEGRAM_CHAT_ID")
|
||||||
AppConfig.CronPattern = os.Getenv("SCHEDULE_CRON_PATTERN")
|
AppConfig.CronPattern = os.Getenv("SCHEDULE_CRON_PATTERN")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"git.inkling.su/mrqiz/schedule-poll/internal/config"
|
"git.inkling.su/mrqiz/schedule-poll/internal/config"
|
||||||
|
"git.inkling.su/mrqiz/schedule-poll/internal/telegram"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PollSchedule() {
|
func PollSchedule() {
|
||||||
@ -39,6 +40,7 @@ func PollSchedule() {
|
|||||||
siteUrl)
|
siteUrl)
|
||||||
|
|
||||||
os.WriteFile(flagFilePath, []byte(msg), os.FileMode(0777))
|
os.WriteFile(flagFilePath, []byte(msg), os.FileMode(0777))
|
||||||
|
err = telegram.SendMessage(config.AppConfig.Telegram.ChatId, msg)
|
||||||
log.Printf("Found %d days", len(week.Days))
|
log.Printf("Found %d days", len(week.Days))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
internal/telegram/api.go
Normal file
36
internal/telegram/api.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package telegram
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"git.inkling.su/mrqiz/schedule-poll/internal/config"
|
||||||
|
"github.com/go-resty/resty/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
var client = resty.New().SetBaseURL("https://api.telegram.org")
|
||||||
|
|
||||||
|
func GetMe() error {
|
||||||
|
_, err := client.R().
|
||||||
|
Get(fmt.Sprintf("/bot%s/getMe", config.AppConfig.Telegram.Token))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SendMessage(chatId, message string) error {
|
||||||
|
_, err := client.R().
|
||||||
|
SetQueryParams(map[string]string{
|
||||||
|
"chat_id": chatId,
|
||||||
|
"text": message,
|
||||||
|
}).
|
||||||
|
Get(fmt.Sprintf("/bot%s/sendMessage", config.AppConfig.Telegram.Token))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user