alexvanin
f0f31a8415
This commits adds new feature for galchedbot: video requests in the twitch chat via highlighted chat messages. This messages parsed by the bot and added to the video queue, that can be accessed by the dedicated web server. Video queue requires authorization based on random token added to the cookies.
114 lines
2.9 KiB
Go
114 lines
2.9 KiB
Go
package settings
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
version = "5.0.0"
|
|
twitchUser = "galchedbot"
|
|
twitchIRCRoom = "galched"
|
|
discordTokenPath = "./tokens/.discordtoken"
|
|
twitchTokenPath = "./tokens/.twitchtoken"
|
|
subdayDataPath = "./backups/subday"
|
|
youtubeTokenPath = "./tokens/.youtubetoken"
|
|
webLoginsPath = "./tokens/.weblogins"
|
|
|
|
// Permitted roles in discord for subday
|
|
subRole1 = "433672344737677322"
|
|
subRole2 = "433680494635515904"
|
|
galchedRole = "301467455497175041"
|
|
smorcRole = "301470784491356172"
|
|
|
|
defaultQueueAddr = ":8888"
|
|
)
|
|
|
|
type (
|
|
SongInfo struct {
|
|
Path string
|
|
Signature string
|
|
Description string
|
|
Permissions []string
|
|
Timeout time.Duration
|
|
}
|
|
|
|
Settings struct {
|
|
Version string
|
|
DiscordToken string
|
|
TwitchUser string
|
|
TwitchIRCRoom string
|
|
TwitchToken string
|
|
YoutubeToken string
|
|
SubdayDataPath string
|
|
PermittedRoles []string
|
|
DiscordVoiceChannel string
|
|
Songs []SongInfo
|
|
|
|
QueueAddress string
|
|
LoginUsers map[string]string
|
|
}
|
|
)
|
|
|
|
func New() (*Settings, error) {
|
|
discordToken, err := ioutil.ReadFile(discordTokenPath)
|
|
if err != nil {
|
|
log.Print("settings: cannot read discord token file", err)
|
|
}
|
|
twitchToken, err := ioutil.ReadFile(twitchTokenPath)
|
|
if err != nil {
|
|
log.Print("settings: cannot read twitch token file", err)
|
|
}
|
|
youtubetoken, err := ioutil.ReadFile(youtubeTokenPath)
|
|
if err != nil {
|
|
log.Print("settings: cannot read twitch token file", err)
|
|
}
|
|
|
|
webLogins := make(map[string]string)
|
|
webLoginsRaw, err := ioutil.ReadFile(webLoginsPath)
|
|
if err != nil {
|
|
log.Print("settings: cannot read web login file", err)
|
|
} else {
|
|
err = json.Unmarshal(webLoginsRaw, &webLogins)
|
|
if err != nil {
|
|
log.Print("settings: cannot parse web login file", err)
|
|
}
|
|
}
|
|
|
|
return &Settings{
|
|
Version: version,
|
|
DiscordToken: string(discordToken),
|
|
TwitchToken: string(twitchToken),
|
|
YoutubeToken: string(youtubetoken),
|
|
TwitchUser: twitchUser,
|
|
TwitchIRCRoom: twitchIRCRoom,
|
|
SubdayDataPath: subdayDataPath,
|
|
DiscordVoiceChannel: "301793085522706432",
|
|
PermittedRoles: []string{subRole1, subRole2, galchedRole, smorcRole},
|
|
Songs: []SongInfo{
|
|
{
|
|
Path: "songs/polka.dca",
|
|
Signature: "!song",
|
|
Description: "сыграть гимн галчед (только для избранных)",
|
|
Permissions: []string{"AlexV", "Rummy_Quamox", "Lidiya_owl"},
|
|
Timeout: 10 * time.Second,
|
|
},
|
|
{
|
|
Path: "songs/whisper.dca",
|
|
Signature: "!sax",
|
|
Description: "kreygasm",
|
|
Timeout: 20 * time.Second,
|
|
},
|
|
{
|
|
Path: "songs/st.dca",
|
|
Signature: "!chiki",
|
|
Description: "briki v damki",
|
|
Timeout: 20 * time.Second,
|
|
},
|
|
},
|
|
QueueAddress: defaultQueueAddr,
|
|
LoginUsers: webLogins,
|
|
}, nil
|
|
}
|