Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "database/sql"
- "fmt"
- "log"
- "math/rand"
- "net/http"
- "net/url"
- "strconv"
- "strings"
- "time"
- _ "github.com/go-sql-driver/mysql"
- )
- type homework struct {
- id int
- text string
- todate string
- }
- type recipient struct {
- id int
- name string
- userID int
- }
- func main() {
- begin, end, err := getEndPoints()
- if err != nil {
- log.Fatal(err)
- } else {
- fmt.Println(begin, end)
- message := getHomework(begin, end)
- //fmt.Println(message)
- sendHomework(message)
- }
- }
- func getEndPoints() (string, string, error) {
- date := time.Now()
- dayOfWeek := date.Weekday()
- //fmt.Println("Сейчас: ", date)
- if dayOfWeek == 0 || dayOfWeek == 6 {
- monday := time.Now().AddDate(0, 0, 0-int(time.Now().Weekday())+int(time.Monday))
- sunday := time.Now().AddDate(0, 0, 13-int(time.Now().Weekday())+int(time.Monday))
- return monday.Format("2006-01-02 15:04:05"), sunday.Format("2006-01-02 15:04:05"), nil
- } else {
- monday := date.AddDate(0, 0, -int(date.Weekday())+int(time.Monday))
- sunday := date.AddDate(0, 0, -int(date.Weekday())+int(time.Sunday))
- return monday.Format("2006-01-02 15:04:05"), sunday.Format("2006-01-02 15:04:05"), nil
- //sunday := int(time.Now().Weekday()) + int(time.Monday)
- //sunday := time.Now().AddDate(0, 0, 6-int(time.Now().Weekday())+int(time.Monday))
- //fmt.Println(monday.Format("2006-01-02 15:04:05"))
- }
- }
- func getHomework(begin, end string) string {
- message := "Вот ваше домашнее задание: \n _________________ \n"
- db, err := sql.Open("mysql", "root:123321@/botdz")
- if err != nil {
- panic(err)
- }
- defer db.Close()
- rows, err := db.Query("select * from homework WHERE todate BETWEEN '" + begin + "' AND '" + end + "' ORDER BY todate")
- if err != nil {
- panic(err)
- }
- defer rows.Close()
- homeworks := []homework{}
- for rows.Next() {
- p := homework{}
- err := rows.Scan(&p.id, &p.text, &p.todate)
- if err != nil {
- fmt.Println(err)
- continue
- }
- homeworks = append(homeworks, p)
- }
- for _, p := range homeworks {
- message += p.text + " | Дата - " + p.todate + "\n_____________________\n"
- }
- return message
- }
- func sendMessage(peerID, randomID int, message string) {
- /*
- data := map[string]interface{}{
- "peer_id": strconv.Itoa(peerID),
- "random_id": strconv.Itoa(randomID),
- "message": message,
- "access_token": "тут тип токен",
- "v": "5.90",
- }
- */
- client := &http.Client{}
- urlData := url.Values{}
- urlData.Set("peer_id", strconv.Itoa(peerID))
- urlData.Set("random_id", strconv.Itoa(randomID))
- urlData.Set("message", message)
- urlData.Set("access_token", "")
- urlData.Set("v", "5.90")
- req, _ := http.NewRequest("POST", "https://api.vk.com/method/messages.send", strings.NewReader(urlData.Encode()))
- req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
- resp, _ := client.Do(req)
- fmt.Println(resp)
- }
- func sendHomework(message string) error {
- db, err := sql.Open("mysql", "root:123321@/botdz")
- if err != nil {
- panic(err)
- }
- defer db.Close()
- rows, err := db.Query("select * from recipients")
- if err != nil {
- panic(err)
- }
- defer rows.Close()
- recipients := []recipient{}
- for rows.Next() {
- p := recipient{}
- err := rows.Scan(&p.id, &p.name, &p.userID)
- if err != nil {
- fmt.Println(err)
- continue
- }
- recipients = append(recipients, p)
- }
- for _, p := range recipients {
- rand := rand.Intn(9999-1) + 1
- sendMessage(p.userID, rand, message)
- //fmt.Println(p.userID)
- }
- return nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement