Compare commits

..

No commits in common. 'master' and 'master' have entirely different histories.

  1. 9
      .drone.yml
  2. 1
      .gitignore
  3. 10
      Dockerfile
  4. 72
      bot.go
  5. 6
      go.mod
  6. 15
      go.sum

@ -1,9 +0,0 @@
pipeline:
docker:
image: plugins/docker:17.12
secrets: [ docker_username, docker_password ]
pull: true
repo: jonasfranz/mensabot
default_tags: true
when:
event: [ push, tag ]

1
.gitignore vendored

@ -1 +0,0 @@
.idea/

@ -1,10 +0,0 @@
FROM golang:1.12-alpine AS build-env
COPY . ${GOPATH}/src/git.jonasfranz.software/JonasFranzDEV/mensabot
WORKDIR ${GOPATH}/src/git.jonasfranz.software/JonasFranzDEV/mensabot
RUN go build
FROM alpine:3.7
RUN apk --no-cache add ca-certificates
COPY --from=build-env /go/src/git.jonasfranz.software/JonasFranzDEV/mensabot/mensabot /app/mensabot/mensabot
ENTRYPOINT ["/app/mensabot/mensabot"]

@ -14,40 +14,28 @@ import (
var (
canteen *openmensa.Canteen
emojis = map[string][]string{
":pizza:": {"pizza"},
":hotdog:": {"wurst", "würstchen", "hotdog"},
":fries:": {"pommes"},
":hamburger:": {"burger"},
":fish:": {"lachs", "filet", "fisch", "kabeljau", "hering", "makrele", "sardine", "schellfisch", "seezunge"},
":apple:": {"apfel", "äpfel"},
":poultry_leg:": {"hähnchen"},
":meat_on_bone:": {"schnitzel", "steak", "schwein", "huhn", "geflügel"},
":spaghetti:": {"nudel", "spaghetti", "pasta"},
":bread:": {"brot", "brötchen"},
":rice:": {"reis"},
emojis = map[string][]string {
":pizza:": {"pizza"},
":hotdog:": {"wurst"},
":fries:": {"pommes"},
":hamburger:": {"burger"},
":fish:": {"lachs", "filet", "fisch", "kabeljau"},
":apple:": {"apfel", "äpfel"},
":poultry_leg:": {"hänchen"},
":meat_on_bone:": {"schnitzel"},
":spaghetti:": {"nudel", "spaghetti", "pasta"},
}
)
func main() {
token := os.Getenv("MENSABOT_TOKEN")
if (len(token) == 0 || token == "token") && len(os.Args) <= 0 {
fmt.Println("Please add token as environment variable (MENSABOT_TOKEN) or cli argument.")
return
}
if len(os.Args) > 1 {
token = os.Args[1]
}
dg, err := discordgo.New(fmt.Sprintf("Bot %s", token))
if err != nil {
fmt.Println("error creating discord bot: ", err)
if len(os.Args) <= 0 {
println("Please add token as cli argument.")
return
}
dg, err := discordgo.New(fmt.Sprintf("Bot %s", os.Args[1]))
canteens, err := openmensa.GetCanteens(175)
if err != nil {
fmt.Println("error getting mensa: ", err)
fmt.Println("error creating discord bot: ", err)
return
}
dg.AddHandler(messageCreate)
@ -78,16 +66,7 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
}
if m.Content == "!mensa" {
date := time.Now()
switch date.Weekday() {
case time.Saturday:
date = date.AddDate(0, 0, -1)
break
case time.Sunday:
date = date.AddDate(0, 0, -2)
break
}
sendMealsForDate(s, date, m.ChannelID)
sendMealsForDate(s, time.Now(), m.ChannelID)
}
}
@ -95,7 +74,6 @@ func sendMealsForDate(s *discordgo.Session, t time.Time, channel string) {
meals, err := canteen.GetMeals(t)
if err != nil {
s.ChannelMessageSend(channel, ":angry: an error occured")
fmt.Println("an error occured while getting the meals: ", err)
return
}
var messages = make([]*discordgo.MessageEmbedField, len(meals))
@ -103,12 +81,11 @@ func sendMealsForDate(s *discordgo.Session, t time.Time, channel string) {
for i, meal := range meals {
prefix := ""
outer:
for emoji, keywords := range emojis {
outer: for emoji, keywords := range emojis {
for _, keyword := range keywords {
if strings.Contains(strings.ToLower(meal.Name), keyword) {
prefix += emoji
continue outer
continue outer;
}
}
}
@ -118,24 +95,21 @@ func sendMealsForDate(s *discordgo.Session, t time.Time, channel string) {
}
messages[i] = &discordgo.MessageEmbedField{
Name: prefix + meal.Name,
Name: prefix + meal.Name,
Value: fmt.Sprintf("%.2f€", *meal.Prices.Students),
}
if len(meal.Notes) > 0 {
footer += fmt.Sprintf("[%d] %s\n", i+1, strings.Join(meal.Notes, ", "))
footer += fmt.Sprintf("[%d] %s\n", i + 1, strings.Join(meal.Notes, ", "))
}
}
_, err = s.ChannelMessageSendComplex(channel, &discordgo.MessageSend{
s.ChannelMessageSendComplex(channel, &discordgo.MessageSend{
Embed: &discordgo.MessageEmbed{
Title: fmt.Sprintf("**Menü vom %s**", t.Format("02.01.2006")),
Title: fmt.Sprintf("** :spaghetti: Menü vom %s**", t.Format("02.01.2006")),
Fields: messages,
Footer: &discordgo.MessageEmbedFooter{
IconURL: "https://pbs.twimg.com/profile_images/643755515118505984/xzZMK7fU_400x400.png",
Text: footer,
Text: footer,
},
},
})
if err != nil {
fmt.Println("an error occured while sending the meals: ", err)
}
}
}

@ -1,8 +1,8 @@
module git.jonasfranz.software/mensabot
require (
github.com/bwmarrin/discordgo v0.19.0
github.com/bwmarrin/discordgo v0.18.0
github.com/gorilla/websocket v1.4.0 // indirect
github.com/kiliankoe/openmensa v0.0.0-20160914233745-a68c3aca59c0
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a // indirect
golang.org/x/sys v0.0.0-20190411185658-b44545bcd369 // indirect
golang.org/x/crypto v0.0.0-20181025213731-e84da0312774 // indirect
)

@ -1,15 +0,0 @@
github.com/bwmarrin/discordgo v0.18.0 h1:XopVQXCIFy7Cr2eT7NcYcm4k0l2PYX+AP5RUbIWX2/8=
github.com/bwmarrin/discordgo v0.18.0/go.mod h1:5NIvFv5Z7HddYuXbuQegZ684DleQaCFqChP2iuBivJ8=
github.com/bwmarrin/discordgo v0.19.0 h1:kMED/DB0NR1QhRcalb85w0Cu3Ep2OrGAqZH1R5awQiY=
github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/kiliankoe/openmensa v0.0.0-20160914233745-a68c3aca59c0 h1:nqLa9Sn5qo4CvsPxTyvWZ6XkmUowbszZPJdW0U+O2O4=
github.com/kiliankoe/openmensa v0.0.0-20160914233745-a68c3aca59c0/go.mod h1:WAZWjpFB1pagPLV6awqMVlcG57PxYbAHPRsPpf60LHw=
golang.org/x/crypto v0.0.0-20181025213731-e84da0312774 h1:a4tQYYYuK9QdeO/+kEvNYyuR21S+7ve5EANok6hABhI=
golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a h1:Igim7XhdOpBnWPuYJ70XcNpq8q3BCACtVgNfoJxOV7g=
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Loading…
Cancel
Save