Advertisement
Guest User

Untitled

a guest
Sep 14th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.55 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "database/sql"
  5.     "fmt"
  6.     "log"
  7.     "math/rand"
  8.     "net/http"
  9.     "net/url"
  10.     "strconv"
  11.     "strings"
  12.     "time"
  13.  
  14.     _ "github.com/go-sql-driver/mysql"
  15. )
  16.  
  17. type homework struct {
  18.     id     int
  19.     text   string
  20.     todate string
  21. }
  22.  
  23. type recipient struct {
  24.     id     int
  25.     name   string
  26.     userID int
  27. }
  28.  
  29. func main() {
  30.  
  31.     begin, end, err := getEndPoints()
  32.     if err != nil {
  33.         log.Fatal(err)
  34.     } else {
  35.         fmt.Println(begin, end)
  36.         message := getHomework(begin, end)
  37.         //fmt.Println(message)
  38.         sendHomework(message)
  39.     }
  40. }
  41.  
  42. func getEndPoints() (string, string, error) {
  43.     date := time.Now()
  44.  
  45.     dayOfWeek := date.Weekday()
  46.     //fmt.Println("Сейчас: ", date)
  47.     if dayOfWeek == 0 || dayOfWeek == 6 {
  48.         monday := time.Now().AddDate(0, 0, 0-int(time.Now().Weekday())+int(time.Monday))
  49.         sunday := time.Now().AddDate(0, 0, 13-int(time.Now().Weekday())+int(time.Monday))
  50.         return monday.Format("2006-01-02 15:04:05"), sunday.Format("2006-01-02 15:04:05"), nil
  51.     } else {
  52.         monday := date.AddDate(0, 0, -int(date.Weekday())+int(time.Monday))
  53.         sunday := date.AddDate(0, 0, -int(date.Weekday())+int(time.Sunday))
  54.         return monday.Format("2006-01-02 15:04:05"), sunday.Format("2006-01-02 15:04:05"), nil
  55.         //sunday := int(time.Now().Weekday()) + int(time.Monday)
  56.         //sunday := time.Now().AddDate(0, 0, 6-int(time.Now().Weekday())+int(time.Monday))
  57.         //fmt.Println(monday.Format("2006-01-02 15:04:05"))
  58.     }
  59.  
  60. }
  61.  
  62. func getHomework(begin, end string) string {
  63.     message := "Вот ваше домашнее задание: \n _________________ \n"
  64.     db, err := sql.Open("mysql", "root:123321@/botdz")
  65.  
  66.     if err != nil {
  67.         panic(err)
  68.     }
  69.     defer db.Close()
  70.     rows, err := db.Query("select * from homework WHERE todate BETWEEN '" + begin + "' AND '" + end + "' ORDER BY todate")
  71.     if err != nil {
  72.         panic(err)
  73.     }
  74.     defer rows.Close()
  75.     homeworks := []homework{}
  76.  
  77.     for rows.Next() {
  78.         p := homework{}
  79.         err := rows.Scan(&p.id, &p.text, &p.todate)
  80.         if err != nil {
  81.             fmt.Println(err)
  82.             continue
  83.         }
  84.         homeworks = append(homeworks, p)
  85.     }
  86.     for _, p := range homeworks {
  87.         message += p.text + " | Дата - " + p.todate + "\n_____________________\n"
  88.     }
  89.     return message
  90. }
  91.  
  92. func sendMessage(peerID, randomID int, message string) {
  93.     /*
  94.         data := map[string]interface{}{
  95.             "peer_id":      strconv.Itoa(peerID),
  96.             "random_id":    strconv.Itoa(randomID),
  97.             "message":      message,
  98.             "access_token": "тут тип токен",
  99.             "v":            "5.90",
  100.         }
  101.     */
  102.     client := &http.Client{}
  103.  
  104.     urlData := url.Values{}
  105.     urlData.Set("peer_id", strconv.Itoa(peerID))
  106.     urlData.Set("random_id", strconv.Itoa(randomID))
  107.     urlData.Set("message", message)
  108.     urlData.Set("access_token", "")
  109.     urlData.Set("v", "5.90")
  110.     req, _ := http.NewRequest("POST", "https://api.vk.com/method/messages.send", strings.NewReader(urlData.Encode()))
  111.  
  112.     req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  113.     resp, _ := client.Do(req)
  114.     fmt.Println(resp)
  115. }
  116.  
  117. func sendHomework(message string) error {
  118.     db, err := sql.Open("mysql", "root:123321@/botdz")
  119.     if err != nil {
  120.         panic(err)
  121.     }
  122.     defer db.Close()
  123.     rows, err := db.Query("select * from recipients")
  124.     if err != nil {
  125.         panic(err)
  126.     }
  127.     defer rows.Close()
  128.     recipients := []recipient{}
  129.  
  130.     for rows.Next() {
  131.         p := recipient{}
  132.         err := rows.Scan(&p.id, &p.name, &p.userID)
  133.         if err != nil {
  134.             fmt.Println(err)
  135.             continue
  136.         }
  137.         recipients = append(recipients, p)
  138.     }
  139.     for _, p := range recipients {
  140.         rand := rand.Intn(9999-1) + 1
  141.         sendMessage(p.userID, rand, message)
  142.         //fmt.Println(p.userID)
  143.     }
  144.     return nil
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement