Archived
overwatch module created
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
package modules
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
"github.com/leekchan/accounting"
|
||||
"strconv"
|
||||
"time"
|
||||
"dev.ixab.de/WGSWATBP/WGoSlackBot/util"
|
||||
)
|
||||
|
||||
var (
|
||||
owbotname string
|
||||
owboticon string
|
||||
owapiurl string = "https://api.lootbox.eu/"
|
||||
)
|
||||
|
||||
func init() {
|
||||
MsgHandlers["ow"] = owHandleMessage
|
||||
log.Println("Initializing ow module")
|
||||
go setOwConfig()
|
||||
}
|
||||
func setOwConfig() {
|
||||
time.Sleep(5 * time.Second)
|
||||
owbotname = ModParams["owbotname"]
|
||||
owboticon = ModParams["owboticon"]
|
||||
}
|
||||
func owHandleMessage(payload *WebhookPayload) {
|
||||
if payload.Command == "/d3" {
|
||||
reply := handleOwRequest(payload, true)
|
||||
if reply != "" {
|
||||
SayCh <- GeneratePayload(payload.ChannelName, d3boticon, reply, d3botname)
|
||||
}
|
||||
}
|
||||
if payload.TriggerWord == "!d3" {
|
||||
reply := handleOwRequest(payload, false)
|
||||
if reply != "" {
|
||||
SayCh <- GeneratePayload(payload.ChannelName, d3boticon, reply, d3botname)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func handleOwRequest(payload *WebhookPayload, isCommand bool) string {
|
||||
var tokMod int
|
||||
if isCommand {
|
||||
tokMod = 0
|
||||
} else {
|
||||
tokMod = 1
|
||||
}
|
||||
|
||||
tok := strings.Split(payload.Text, " ")
|
||||
var result string
|
||||
if len(tok) < 2+tokMod {
|
||||
if tok[0+tokMod] == "" {
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, owboticon, "Es wurde kein Battletag angegeben.", owbotname)
|
||||
} else {
|
||||
battletag, err := checkBattleTag(tok[0+tokMod])
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, owboticon, "Battletag "+tok[0+tokMod]+" fehlerhaft oder nicht gefunden.", owbotname)
|
||||
}
|
||||
profile, err := getD3Profile(battletag)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, owboticon, "Battletag "+tok[0+tokMod]+" fehlerhaft oder nicht gefunden.", owbotname)
|
||||
result = ""
|
||||
} else {
|
||||
readableBattletag := strings.Replace(battletag, "-", "#", 1)
|
||||
lastUpdate := time.Unix(int64(profile.LastUpdated), 0).Format(time.RFC850)
|
||||
paragon := util.NumberToString(profile.ParagonLevel, '.')
|
||||
paragonHardcore := util.NumberToString(profile.ParagonLevelHardcore, '.')
|
||||
paragonSeason := util.NumberToString(profile.ParagonLevelSeason, '.')
|
||||
paragonSeasonHardcore := util.NumberToString(profile.ParagonLevelSeasonHardcore, '.')
|
||||
var allHeroes string
|
||||
for i, hero := range profile.Heroes {
|
||||
allHeroes += classToIcon(hero.Class, hero.Gender) + "" + heroTypeToIconString(hero.Seasonal, hero.Hardcore) + " " + hero.Name + " " + strconv.Itoa(hero.Level)
|
||||
if i+1 != len(profile.Heroes) {
|
||||
allHeroes += ", "
|
||||
}
|
||||
}
|
||||
result +=
|
||||
"*" + readableBattletag + "*\n" +
|
||||
"*Last Update:* " + lastUpdate + "\n" +
|
||||
"*Paragon:* " + paragon + ", :d3hardcore:" + paragonHardcore + ", :d3season:" + paragonSeason + ", :d3seasonhardcore:" + paragonSeasonHardcore + "\n" +
|
||||
"*Available Heroes:* " + allHeroes + "\n" +
|
||||
"https://eu.battle.net/d3/en/profile/" + battletag + "/"
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(tok) >= 2+tokMod {
|
||||
battletag, err := checkBattleTag(tok[0+tokMod])
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, d3boticon, "Battletag "+tok[0+tokMod]+" fehlerhaft oder nicht gefunden.", d3botname)
|
||||
} else {
|
||||
profile, err := getD3Profile(battletag)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, d3boticon, "Battletag "+tok[0+tokMod]+" fehlerhaft oder nicht gefunden.", d3botname)
|
||||
} else {
|
||||
hit := false
|
||||
for _, currenthero := range profile.Heroes {
|
||||
if strings.ToLower(currenthero.Name) == strings.ToLower(tok[1+tokMod]) {
|
||||
hero := getD3Hero(battletag, currenthero.ID)
|
||||
hit = true
|
||||
// TODO: hero data output
|
||||
result = "Hero: " + accounting.FormatNumberFloat64(hero.Stats.Damage, 0, ".", ",") + "\n" +
|
||||
"https://eu.battle.net/d3/en/profile/" + battletag + "/hero/" + strconv.Itoa(currenthero.ID)
|
||||
result = "Hero: " + "https://eu.battle.net/d3/en/profile/" + battletag + "/hero/" + strconv.Itoa(currenthero.ID)
|
||||
}
|
||||
}
|
||||
if !hit {
|
||||
SayCh <- GeneratePayload("@"+payload.UserName, d3boticon, "Es konnte kein Charakter mit dem Namen *"+tok[1+tokMod]+"* unter dem Battletag *"+tok[0+tokMod]+"* gefunden werden.", d3botname)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user