mirror of
https://github.com/lyx0/nourybot.git
synced 2024-11-13 19:49:55 +01:00
add title command, use helix api for twitch lookups
This commit is contained in:
parent
e993de4eb1
commit
f45b141cc3
3 changed files with 135 additions and 32 deletions
|
@ -8,7 +8,6 @@ import (
|
|||
"github.com/gempir/go-twitch-irc/v4"
|
||||
"github.com/lyx0/nourybot/pkg/commands"
|
||||
"github.com/lyx0/nourybot/pkg/common"
|
||||
"github.com/lyx0/nourybot/pkg/ivr"
|
||||
"github.com/lyx0/nourybot/pkg/lastfm"
|
||||
"github.com/lyx0/nourybot/pkg/owm"
|
||||
)
|
||||
|
@ -89,7 +88,6 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
reply = commands.Bttv(cmdParams[1])
|
||||
}
|
||||
|
||||
// Coinflip
|
||||
case "coin":
|
||||
reply = commands.Coinflip()
|
||||
|
||||
|
@ -103,7 +101,6 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
if msgLen < 4 {
|
||||
reply = "Not enough arguments provided. Usage: ()currency 10 USD to EUR"
|
||||
} else {
|
||||
// ()currency <amount> <input currency> to <output currency>
|
||||
reply, _ = commands.Currency(cmdParams[1], cmdParams[2], cmdParams[4])
|
||||
}
|
||||
|
||||
|
@ -122,30 +119,6 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
case "frankerfacez":
|
||||
reply = commands.Ffz(cmdParams[1])
|
||||
|
||||
case "notify":
|
||||
switch cmdParams[1] {
|
||||
case "live":
|
||||
if userLevel >= 100 {
|
||||
reply = app.createLiveSubscription(target, cmdParams[2])
|
||||
}
|
||||
case "offline":
|
||||
if userLevel >= 100 {
|
||||
reply = app.createOfflineSubscription(target, cmdParams[2])
|
||||
}
|
||||
}
|
||||
|
||||
case "unnotify":
|
||||
switch cmdParams[1] {
|
||||
case "live":
|
||||
if userLevel >= 100 {
|
||||
reply = app.deleteLiveSubscription(target, cmdParams[2])
|
||||
}
|
||||
case "offline":
|
||||
if userLevel >= 100 {
|
||||
reply = app.deleteOfflineSubscription(target, cmdParams[2])
|
||||
}
|
||||
}
|
||||
|
||||
case "ddg":
|
||||
reply = commands.DuckDuckGo(message.Message[6:len(message.Message)])
|
||||
|
||||
|
@ -214,10 +187,10 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
reply, _ = commands.Xkcd()
|
||||
|
||||
case "uid":
|
||||
reply = ivr.IDByUsernameReply(cmdParams[1])
|
||||
reply, _ = app.getChannelID(cmdParams[1])
|
||||
|
||||
case "userid":
|
||||
reply = ivr.IDByUsernameReply(cmdParams[1])
|
||||
reply, _ = app.getChannelID(cmdParams[1])
|
||||
|
||||
case "commands":
|
||||
reply = app.ListChannelCommands(message.Channel)
|
||||
|
@ -225,6 +198,15 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
case "timers":
|
||||
reply = fmt.Sprintf("https://bot.noury.li/timer/%s", message.Channel)
|
||||
|
||||
case "title":
|
||||
if msgLen == 1 {
|
||||
reply = app.getChannelTitleByUsername(target)
|
||||
} else if msgLen == 2 {
|
||||
reply = app.getChannelTitleByUsername(cmdParams[1])
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
case "conv":
|
||||
if userLevel >= 100 {
|
||||
app.ConvertToMP4(cmdParams[1], message)
|
||||
|
@ -297,6 +279,30 @@ func (app *application) handleCommand(message twitch.PrivateMessage) {
|
|||
go app.NewDownload("kappa", target, cmdParams[1], message)
|
||||
}
|
||||
|
||||
case "notify":
|
||||
switch cmdParams[1] {
|
||||
case "live":
|
||||
if userLevel >= 420 {
|
||||
reply = app.createLiveSubscription(target, cmdParams[2])
|
||||
}
|
||||
case "offline":
|
||||
if userLevel >= 420 {
|
||||
reply = app.createOfflineSubscription(target, cmdParams[2])
|
||||
}
|
||||
}
|
||||
|
||||
case "unnotify":
|
||||
switch cmdParams[1] {
|
||||
case "live":
|
||||
if userLevel >= 420 {
|
||||
reply = app.deleteLiveSubscription(target, cmdParams[2])
|
||||
}
|
||||
case "offline":
|
||||
if userLevel >= 420 {
|
||||
reply = app.deleteOfflineSubscription(target, cmdParams[2])
|
||||
}
|
||||
}
|
||||
|
||||
case "yaf":
|
||||
if userLevel >= 420 {
|
||||
go app.NewDownload("yaf", target, cmdParams[1], message)
|
||||
|
@ -568,6 +574,20 @@ var helpText = map[string]command{
|
|||
Level: "0",
|
||||
Usage: "()lastfm [username]",
|
||||
},
|
||||
"notify live": {
|
||||
Name: "notify live",
|
||||
Alias: nil,
|
||||
Description: `Sends a notification when the specified Twitch channel goes online.`,
|
||||
Level: "420",
|
||||
Usage: "()notify live <username>",
|
||||
},
|
||||
"notify offline": {
|
||||
Name: "notify offline",
|
||||
Alias: nil,
|
||||
Description: `Sends a notification when the specified Twitch channel goes offline.`,
|
||||
Level: "420",
|
||||
Usage: "()notify offline <username>",
|
||||
},
|
||||
"osrs": {
|
||||
Name: "osrs",
|
||||
Alias: nil,
|
||||
|
@ -659,6 +679,27 @@ var helpText = map[string]command{
|
|||
Level: "0",
|
||||
Usage: "()timers",
|
||||
},
|
||||
"title": {
|
||||
Name: "title",
|
||||
Alias: nil,
|
||||
Description: "Returns the title of a Twitch channel.",
|
||||
Level: "0",
|
||||
Usage: "()title [name]",
|
||||
},
|
||||
"unnotify live": {
|
||||
Name: "unnotify live",
|
||||
Alias: nil,
|
||||
Description: `Removes a notification for a channel going online.`,
|
||||
Level: "420",
|
||||
Usage: "()unnotify live <username>",
|
||||
},
|
||||
"unnotify offline": {
|
||||
Name: "unnotify offline",
|
||||
Alias: nil,
|
||||
Description: `Removes a notification for a channel going offline.`,
|
||||
Level: "420",
|
||||
Usage: "()unnotify offline <username>",
|
||||
},
|
||||
"user edit level": {
|
||||
Name: "user edit level",
|
||||
Alias: []string{"user set level"},
|
||||
|
|
63
cmd/nourybot/helix.go
Normal file
63
cmd/nourybot/helix.go
Normal file
|
@ -0,0 +1,63 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/nicklaw5/helix/v2"
|
||||
)
|
||||
|
||||
func (app *application) getChannelID(username string) (string, error) {
|
||||
resp, err := app.HelixClient.GetUsers(&helix.UsersParams{
|
||||
Logins: []string{username},
|
||||
})
|
||||
if err != nil {
|
||||
app.Log.Error(err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
return resp.Data.Users[0].ID, nil
|
||||
}
|
||||
|
||||
func (app *application) getChannelTitle(channelID string) string {
|
||||
resp, err := app.HelixClient.GetChannelInformation(&helix.GetChannelInformationParams{
|
||||
BroadcasterID: channelID,
|
||||
})
|
||||
if err != nil {
|
||||
app.Log.Error(err)
|
||||
return "Something went wrong FeelsBadMan"
|
||||
}
|
||||
|
||||
return resp.Data.Channels[0].Title
|
||||
}
|
||||
|
||||
func (app *application) getChannelTitleByUsername(username string) string {
|
||||
channelID, err := app.getChannelID(username)
|
||||
if err != nil {
|
||||
app.Log.Error(err)
|
||||
return "Something went wrong FeelsBadMan"
|
||||
}
|
||||
|
||||
reply := app.getChannelTitle(channelID)
|
||||
return reply
|
||||
}
|
||||
|
||||
func (app *application) getChannelGame(channelId string) string {
|
||||
resp, err := app.HelixClient.GetChannelInformation(&helix.GetChannelInformationParams{
|
||||
BroadcasterID: channelId,
|
||||
})
|
||||
if err != nil {
|
||||
app.Log.Error(err)
|
||||
return "Something went wrong FeelsBadMan"
|
||||
}
|
||||
|
||||
return resp.Data.Channels[0].GameName
|
||||
}
|
||||
|
||||
func (app *application) getChannelGameByUsername(username string) string {
|
||||
channelID, err := app.getChannelID(username)
|
||||
if err != nil {
|
||||
app.Log.Error(err)
|
||||
return "Something went wrong FeelsBadMan"
|
||||
}
|
||||
|
||||
reply := app.getChannelGame(channelID)
|
||||
return reply
|
||||
}
|
|
@ -14,7 +14,6 @@ import (
|
|||
"github.com/julienschmidt/httprouter"
|
||||
"github.com/lyx0/nourybot/internal/data"
|
||||
"github.com/lyx0/nourybot/pkg/common"
|
||||
"github.com/lyx0/nourybot/pkg/ivr"
|
||||
"github.com/nicklaw5/helix/v2"
|
||||
)
|
||||
|
||||
|
@ -95,8 +94,8 @@ func (app *application) eventsubFollow(w http.ResponseWriter, r *http.Request, p
|
|||
w.WriteHeader(200)
|
||||
w.Write([]byte("ok"))
|
||||
|
||||
game := ivr.GameByUsername(liveEvent.BroadcasterUserLogin)
|
||||
title := ivr.TitleByUsername(liveEvent.BroadcasterUserLogin)
|
||||
game := app.getChannelGame(liveEvent.BroadcasterUserID)
|
||||
title := app.getChannelTitle(liveEvent.BroadcasterUserID)
|
||||
|
||||
app.SendNoBanphrase(channel, fmt.Sprintf("%s went live FeelsGoodMan Game: %s; Title: %s; https://twitch.tv/%s", liveEvent.BroadcasterUserName, game, title, liveEvent.BroadcasterUserLogin))
|
||||
|
||||
|
|
Loading…
Reference in a new issue