Skip to content
Snippets Groups Projects
Commit 0a434ad4 authored by Sven's avatar Sven
Browse files

integrated the muellbot

parent 5b721b36
No related branches found
No related tags found
No related merge requests found
...@@ -2,3 +2,6 @@ zuliprc ...@@ -2,3 +2,6 @@ zuliprc
isobot isobot
!isobot/ !isobot/
muellbot
!muellbot/
...@@ -15,6 +15,7 @@ require ( ...@@ -15,6 +15,7 @@ require (
github.com/hashicorp/go-retryablehttp v0.6.8 // indirect github.com/hashicorp/go-retryablehttp v0.6.8 // indirect
golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect
golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288 // indirect golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288 // indirect
golang.org/x/text v0.3.6 // indirect
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
google.golang.org/appengine v1.3.0 // indirect google.golang.org/appengine v1.3.0 // indirect
) )
...@@ -38,6 +38,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w ...@@ -38,6 +38,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
......
# executable
/muellbot
# secrets
zuliprc
https://commons.wikimedia.org/wiki/File:Trash_Can.svg
package main
import (
"encoding/csv"
"fmt"
"log"
"net/http"
"strconv"
"time"
"github.com/ifo/gozulipbot"
"golang.org/x/text/encoding/charmap"
"gitli.stratum0.org/heyalter/bots"
)
type Config struct {
bots.ZuliprcAPISection `ini:"api"`
}
func main() {
var cfg Config
zlbot, err := bots.InitZulip(&cfg)
if err != nil {
fmt.Println("Couldn't load config because of the error", err)
return
}
now := time.Now()
link := "https://alba-bs.de/service/abfuhrtermine/ajax-kalender.html?tx_mfabfallkalender_mfabfallkalender%5Baction%5D=makecsv&tx_mfabfallkalender_mfabfallkalender%5Bcontroller%5D=Abfallkalender&tx_mfabfallkalender_mfabfallkalender%5Bmf-trash-hausnr%5D=1&tx_mfabfallkalender_mfabfallkalender%5Bmf-trash-hausnrzusatz%5D=&tx_mfabfallkalender_mfabfallkalender%5Bmf-trash-strasse%5D=Am%20Wendentor&tx_mfabfallkalender_mfabfallkalender%5Bmf-trash-thisyear%5D=" + strconv.Itoa(now.Year())
resp, err := http.Get(link)
if err != nil {
log.Println("req error", err)
return
}
defer resp.Body.Close()
rdr := charmap.Windows1252.NewDecoder().Reader(resp.Body)
crd := csv.NewReader(rdr)
crd.Comma = ';'
_, err = crd.Read()
if err != nil {
panic(err)
}
// TODO expect DATUM;ABFALLART;BEHÄLTERGRÖSSE
for {
line, err := crd.Read()
if err != nil {
break
}
date, err := time.Parse("02.01.2006", line[0])
if err != nil {
panic(err)
}
diff := date.Sub(now)
if diff > 0 && diff < 2*24*time.Hour {
if line[1] == "LVP" {
line[1] = "Leichtverpackung (Gelbe Tonne)"
}
// da wir vom anderen Torhaus den Müllplan nutzen müssen für korrekte Abholzeiten,
// ignorieren wir hier die Tonnen, die wir nicht nutzen.
if line[1] == "Biotonne" || line[1] == "Altpapier" {
continue
}
text := fmt.Sprintf("Am %02d wird %s %s abgeholt! Bitte vorher rausstellen.", date.Day(), line[2], line[1])
if _, err := zlbot.Message(gozulipbot.Message{
Stream: "HeyAlter_HQ Braunschweig",
Topic: "Müllabholung",
Content: text,
}); err != nil {
log.Println("Couldn't send chat message:", err)
return
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment