outsider

Rework of https://github.com/CrbrGit/old-ircbots/blob/master

Jul 8th, 2018
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 2.35 KB | None | 0 0
  1. # news.tcl
  2. #
  3. # Script qui display des news depuis une base de données, juste les nouvelles news
  4.  
  5. ## infos de connexion a la base
  6. set mysqlnewsv2(host)   "127.0.0.1"
  7. set mysqlnewsv2(user)   "BDD-USER"
  8. set mysqlnewsv2(pass)   "BDD-PASS"
  9. set mysqlnewsv2(db)     "news"
  10. set mysqlnewsv2(table)  "newsv2"
  11.  
  12. setudef chan newsv2
  13. package require mysqltcl
  14.  
  15. proc newsv2:dbcheck {} {
  16.     global mysqlnewsv2
  17.     if {[info exists mysqlnewsv2(connect)]} {
  18.         if {[mysqlping $mysqlnewsv2(connect)]} { return 1 }
  19.     }
  20.     set mysqlnewsv2(connec) [mysqlconnect -user $mysqlnewsv2(user) -password $mysqlnewsv2(pass) -host $mysqlnewsv2(host)]
  21.     if  {[catch {mysqluse $mysqlnewsv2(connec) $mysqlnewsv2(db)}]} {
  22.         return 0
  23.     }
  24. }
  25.  
  26. bind time - "* * * * *" newsv2:display
  27. proc newsv2:display { min hour day month year } {
  28.     global mysqlnewsv2
  29.  
  30.     if  { $mysqlnewsv2(lock) == 1 } { return 0 }
  31.     if  { newsv2:dbcheck == 0 } { return 0 }
  32.  
  33.     # on met un lock pour etre sur que cet proc sera finie avant le lancement de la suivante
  34.     set mysqlnewsv2(lock) 1
  35.  
  36.     # cherche les differences a afficher depuis la derniere fois
  37.     set sql "SELECT id_unique, source, subsource, titre, url, date, count(id) as nbsites FROM $mysqlnewsv2(table) WHERE id_unique > $mysqlnewsv2(lastsaid) GROUP BY id_unique ORDER by date ASC"
  38.     set result [mysqlquery $mysqlnewsv2(connec) $sql]
  39.     while {[set row [mysqlnext $result]] != ""} {
  40.         set mysaidv2        [lindex $row 0]
  41.         set newssource      [lindex $row 1]
  42.         set newssubsource       [lindex $row 2]
  43.         set newstext        [lindex $row 3]
  44.         set newsurl         [lindex $row 4]
  45.         set newsdate        [lindex $row 5]
  46.  
  47.         if { $mysqlnewsv2(lastsaid) < $mysaidv2 } {
  48.             set mysqlnewsv2(lastsaid) $mysaidv2
  49.         }
  50.  
  51.         if { "$newssubsource" != "" } {
  52.             set newssource      "$newssource - $newssubsource"
  53.         }
  54.  
  55.         foreach chan [channels] {
  56.             if {![channel get $chan newsv2]} { continue }
  57.             putquick "PRIVMSG $mysqlnewsv2(channel) :\[$newssource\] $newstext ($newsdate) \[ $newsurl \]"
  58.         }
  59.     }
  60.     mysqlendquery $result
  61.  
  62.     # a la fin, on enleve le lock
  63.     set mysqlnewsv2(lock) 0
  64. }
  65.  
  66. if  { newsv2:dbcheck == 0 } {
  67.     putlog "Unable to connect to mysql server!"
  68. } else {
  69.     set mysqlnewsv2(lock) 0
  70.     set mysqlnewsv2(lastsaid) 0
  71.     set result [mysqlquery $mysqlnewsv2(connec) "SELECT MAX(id_unique) FROM $mysqlnewsv2(table)"]
  72.     set row [mysqlnext $result]
  73.     set mysqlnewsv2(lastsaid) [lindex $row 0]
  74.     mysqlendquery $result
  75. }
Add Comment
Please, Sign In to add comment