Slightly different config file formats
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

Signed-off-by: Martyn Ranyard <m@rtyn.berlin>
This commit is contained in:
Martyn 2020-07-14 21:23:08 +02:00
parent f4739ada59
commit 09d4dc8d64
2 changed files with 43 additions and 28 deletions

View File

@ -40,13 +40,22 @@ var DirectMsgRegex *regexp.Regexp = regexp.MustCompile(`^:(\w+)!\w+@\w+\.tmi\.tw
// command.
var CmdRegex *regexp.Regexp = regexp.MustCompile(`^!(\w+)\s?(\w+)?`)
type OAuthCred struct {
type IRCOAuthCred struct {
// The bot account's OAuth password.
Password string `json:"password,omitempty"`
// The developer application client ID. Used for API calls to Twitch.
Nick string `json:"nick,omitempty"`
}
type AppOAuthCred struct {
// The bot account's OAuth password.
ClientID string `json:"client_id,omitempty"`
// The developer application client ID. Used for API calls to Twitch.
ClientSecret string `json:"client_secret,omitempty"`
}
type ConfigStruct struct {
@ -59,21 +68,21 @@ type ConfigStruct struct {
}
type KardBot struct {
Channel string
conn net.Conn
IrcCredentials *OAuthCred
AppCredentials *OAuthCred
MsgRate time.Duration
Name string
Port string
Channel string
conn net.Conn
IrcCredentials *IRCOAuthCred
AppCredentials *AppOAuthCred
MsgRate time.Duration
Name string
Port string
IrcPrivatePath string
AppPrivatePath string
Server string
startTime time.Time
Prompts []string
Database scribble.Driver
ChannelData map[string]ChannelData
Config ConfigStruct
Server string
startTime time.Time
Prompts []string
Database scribble.Driver
ChannelData map[string]ChannelData
Config ConfigStruct
}
type ChannelData struct {
@ -83,7 +92,7 @@ type ChannelData struct {
ExtraStrings string `json:"extrastrings,omitempty"`
JoinTime time.Time `json:"jointime"`
ControlChannel bool
HasLeft bool `json:"hasleft"`
HasLeft bool `json:"hasleft"`
}
// Connects the bot to the Twitch IRC server. The bot will continue to try to connect until it
@ -163,8 +172,8 @@ func (bb *KardBot) HandleChat() error {
matches = DirectMsgRegex.FindStringSubmatch(line)
if nil != matches {
userName := matches[1]
// msgType := matches[2]
// channel := matches[3]
// msgType := matches[2]
// channel := matches[3]
msg := matches[4]
rgb.GPrintf("[%s] Direct message %s: %s\n", TimeStamp(), userName, msg)
@ -226,7 +235,7 @@ func (bb *KardBot) HandleChat() error {
)
err := bb.Msg("Welcome to Karaokards, your admin panel is https://karaokards.ing.martyn.berlin/admin/"+userName+"/"+magicCode, userName)
if err != nil {
rgb.RPrintf("[%s] ERROR %s\n",err)
rgb.RPrintf("[%s] ERROR %s\n", err)
}
bb.Say("Ack.")
default:
@ -276,7 +285,7 @@ func (bb *KardBot) JoinChannel(channels ...string) {
func (bb *KardBot) ReadCredentials(credType string) error {
var err error
var credFile []byte
var credFile []byte
// reads from the file
if credType == "IRC" {
credFile, err = ioutil.ReadFile(bb.IrcPrivatePath)
@ -288,15 +297,21 @@ func (bb *KardBot) ReadCredentials(credType string) error {
}
// parses the file contents
var creds OAuthCred
dec := json.NewDecoder(strings.NewReader(string(credFile)))
if err = dec.Decode(&creds); nil != err && io.EOF != err {
return err
}
if credType == "IRC" {
var creds IRCOAuthCred
dec := json.NewDecoder(strings.NewReader(string(credFile)))
if err = dec.Decode(&creds); nil != err && io.EOF != err {
return err
}
bb.IrcCredentials = &creds
} else {
var creds AppOAuthCred
dec := json.NewDecoder(strings.NewReader(string(credFile)))
if err = dec.Decode(&creds); nil != err && io.EOF != err {
return err
}
bb.AppCredentials = &creds
}
@ -383,7 +398,7 @@ func (bb *KardBot) Start() {
bb.Connect()
bb.Login()
if len(bb.ChannelData) > 0 {
for channelName,channelData := range bb.ChannelData {
for channelName, channelData := range bb.ChannelData {
if !channelData.HasLeft {
bb.JoinChannel(channelName)
}

View File

@ -212,7 +212,7 @@ func TwitchAdminHandler(response http.ResponseWriter, request *http.Request) {
"https://id.twitch.tv/oauth2/token",
url.Values{
"client_id": {ircBot.AppCredentials.ClientID},
"client_secret": {ircBot.AppCredentials.Password},
"client_secret": {ircBot.AppCredentials.ClientSecret},
"code": {vars["code"]},
"grant_type": {"authorization_code"},
"redirect_uri": {"https://" + ircBot.Config.ExternalUrl + "/twitchadmin"}})
@ -306,7 +306,7 @@ func TwitchBackendHandler(response http.ResponseWriter, request *http.Request) {
"https://id.twitch.tv/oauth2/token",
url.Values{
"client_id": {ircBot.AppCredentials.ClientID},
"client_secret": {ircBot.AppCredentials.Password},
"client_secret": {ircBot.AppCredentials.ClientSecret},
"code": {vars["code"]},
"grant_type": {"authorization_code"},
"redirect_uri": {"https://" + ircBot.Config.ExternalUrl + "/twitchadmin"}})