bugfixes and finetuning

This commit is contained in:
da
2016-04-24 13:54:58 +02:00
parent 9e0f20af33
commit ea2a1f2627
+42 -29
View File
@@ -129,8 +129,13 @@ var (
func init() { func init() {
MsgHandlers["twitch"] = twitchHandleMessage MsgHandlers["twitch"] = twitchHandleMessage
announceChannel = ModParams["twitchchannel"]
log.Println("Initializing twitch module") log.Println("Initializing twitch module")
go configAndPoll()
}
func configAndPoll() {
time.Sleep(5 * time.Second)
announceChannel = ModParams["twitchchan"]
go pollStreamData() go pollStreamData()
} }
@@ -140,38 +145,43 @@ func twitchHandleMessage(payload *WebhookPayload) {
return return
} }
switch tok[0] { switch tok[0] {
case "!twitch" || "/twitch": case "!twitch":
switch len(tok) { handleCommand(tok, "#"+payload.ChannelName)
case 1: case "/twitch":
onlinestreams := 0 handleCommand(tok, "@"+payload.UserName)
for streamname, _ := range twitch { default:
var so TwitchStreamObject }
var co TwitchChannelObject }
so = getTwitchStreamObject(streamname) func handleCommand(tok []string, target string) {
if so.Stream.Game != "" { switch len(tok) {
onlinestreams++ case 1:
co = getTwitchChannelObject(streamname) onlinestreams := 0
twitchSendMsg(co, so) for streamname, _ := range twitch {
twitch[streamname] = true
} else {
twitch[streamname] = false
}
}
if onlinestreams == 0 {
SayCh <- GeneratePayload(payload.ChannelName, "", "All streams offline", "Twitch_Bot")
}
case 2:
streamname := tok[1]
var so TwitchStreamObject var so TwitchStreamObject
var co TwitchChannelObject var co TwitchChannelObject
so = getTwitchStreamObject(streamname) so = getTwitchStreamObject(streamname)
if so.Stream.Game != "" { if so.Stream.Game != "" {
onlinestreams++
co = getTwitchChannelObject(streamname) co = getTwitchChannelObject(streamname)
twitchSendMsg(co, so) twitchSendMsg(co, so, target)
twitch[streamname] = true
} else { } else {
SayCh <- GeneratePayload("@"+payload.UserName, "", streamname+" not found or offline", "Twitch_Bot") twitch[streamname] = false
} }
default: }
if onlinestreams == 0 {
SayCh <- GeneratePayload(target, "", "All streams offline", "Twitch_Bot")
}
case 2:
streamname := tok[1]
var so TwitchStreamObject
var co TwitchChannelObject
so = getTwitchStreamObject(streamname)
if so.Stream.Game != "" {
co = getTwitchChannelObject(streamname)
twitchSendMsg(co, so, target)
} else {
SayCh <- GeneratePayload(target, "", streamname+" not found or offline", "Twitch_Bot")
} }
default: default:
} }
@@ -187,7 +197,7 @@ func pollStreamData() {
so = getTwitchStreamObject(streamname) so = getTwitchStreamObject(streamname)
if so.Stream.Game != "" && !twitch[streamname] { if so.Stream.Game != "" && !twitch[streamname] {
co = getTwitchChannelObject(streamname) co = getTwitchChannelObject(streamname)
twitchSendMsg(co, so) twitchSendMsg(co, so, "")
twitch[streamname] = true twitch[streamname] = true
} else if so.Stream.Game == "" && twitch[streamname] { } else if so.Stream.Game == "" && twitch[streamname] {
twitch[streamname] = false twitch[streamname] = false
@@ -236,8 +246,11 @@ func getTwitchChannelObject(streamname string) TwitchChannelObject {
return tcobj return tcobj
} }
func twitchSendMsg(tcobj TwitchChannelObject, tso TwitchStreamObject) { func twitchSendMsg(tcobj TwitchChannelObject, tso TwitchStreamObject, target string) {
SayCh <- GeneratePayload(announceChannel, if target == "" {
target = announceChannel
}
SayCh <- GeneratePayload(target,
"", "",
"*"+tso.Stream.Channel.DisplayName+ "*"+tso.Stream.Channel.DisplayName+
"*\n*Title:* "+tcobj.Status+ "*\n*Title:* "+tcobj.Status+