Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "log"
  5. "gopkg.in/telegram-bot-api.v4"
  6. "fmt"
  7. "database/sql"
  8. _ "github.com/lib/pq"
  9. )
  10.  
  11. const (
  12. DB_USER = "USER"
  13. DB_PASSWORD = "PASS"
  14. DB_NAME = "DBNAME"
  15. TOKEN = "THETOKEN"
  16. )
  17.  
  18. func getLastTemp(db* sql.DB) (result string) {
  19. query := `SELECT value_int FROM data_sample_raw WHERE hostname like '%board%' AND data_item LIKE '%temperature' ORDER BY time_stamp DESC LIMIT 1`
  20. res := db.QueryRow(query)
  21.  
  22. var temp int
  23.  
  24.  
  25. if err := res.Scan(&temp); err != nil {
  26. result = fmt.Sprintf("Error scanning : %s", err)
  27. }
  28.  
  29. result = fmt.Sprintf("Temp=%d", temp)
  30. return
  31. }
  32.  
  33. func getLastLight(db* sql.DB) (result string) {
  34. query := "SELECT value_int FROM data_sample_raw WHERE hostname like '%board%' AND data_item LIKE '%light' ORDER BY time_stamp DESC LIMIT 1"
  35. res := db.QueryRow(query)
  36.  
  37. var light int
  38.  
  39. if err := res.Scan(&light); err != nil {
  40. result = fmt.Sprintf("Error scanning : %s", err)
  41. }
  42.  
  43. result = fmt.Sprintf("Light=%d", light)
  44. return
  45. }
  46.  
  47. func getLastDistance(db* sql.DB) (result string) {
  48. query := "SELECT value_real FROM data_sample_raw WHERE hostname like '%board%' AND data_item LIKE '%distance' ORDER BY time_stamp DESC LIMIT 1"
  49. res := db.QueryRow(query)
  50.  
  51. var distance float64
  52.  
  53. if err := res.Scan(&distance); err != nil {
  54. result = fmt.Sprintf("Error scanning : %s", err)
  55. }
  56. result = fmt.Sprintf("Dist=%f", distance)
  57. return
  58. }
  59.  
  60. func getDataFromDB() (result string) {
  61. dbconnect := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
  62. DB_USER, DB_PASSWORD, DB_NAME)
  63. db, err := sql.Open("postgres", dbconnect)
  64. defer db.Close()
  65.  
  66. if err != nil {
  67. result = fmt.Sprintf("Error in database : %s", err)
  68. return
  69. }
  70.  
  71.  
  72. temp := getLastTemp(db)
  73. light := getLastLight(db)
  74. dist := getLastDistance(db)
  75.  
  76. result = fmt.Sprintf("%s\n%s\n%s\n", light, temp, dist)
  77. return
  78. }
  79.  
  80. func main() {
  81. bot, err := tgbotapi.NewBotAPI(TOKEN)
  82. if err != nil {
  83. panic(err)
  84. }
  85.  
  86. bot.Debug = false
  87.  
  88. log.Printf("Authorized on account %s", bot.Self.UserName)
  89.  
  90. u := tgbotapi.NewUpdate(0)
  91. u.Timeout = 60
  92.  
  93. updates, err := bot.GetUpdatesChan(u)
  94.  
  95. for update := range updates {
  96. if update.Message == nil {
  97. continue
  98. }
  99.  
  100. var tmp_msg string
  101.  
  102. if update.Message.Text == `/getlastmetric` {
  103. tmp_msg = getDataFromDB()
  104. } else {
  105. tmp_msg = "Command not implemented"
  106. }
  107.  
  108. msg := tgbotapi.NewMessage(update.Message.Chat.ID, tmp_msg)
  109.  
  110. bot.Send(msg)
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement