Adding the start to couchpotato and some middleware
This commit is contained in:
		@@ -10,17 +10,23 @@ import (
 | 
			
		||||
// Config - This struct will hold configuration components.
 | 
			
		||||
type Config struct {
 | 
			
		||||
	Telegram struct {
 | 
			
		||||
		Token  string `json:"token"`
 | 
			
		||||
		ChatID string `json:"chatID"`
 | 
			
		||||
		Admins []int  `json:"admins"`
 | 
			
		||||
		Token           string   `json:"token"`
 | 
			
		||||
		ChatID          string   `json:"chatID"`
 | 
			
		||||
		Admins          []int    `json:"admins"`
 | 
			
		||||
		AuthorizedChats []string `json:"authorizedChats"`
 | 
			
		||||
	} `json:"telegram"`
 | 
			
		||||
 | 
			
		||||
	Sonarr struct {
 | 
			
		||||
		URL         string `json:"url"`
 | 
			
		||||
		APIKey      string `json:"apiKey"`
 | 
			
		||||
		SeasonLimit int    `json:"seasonLimit"`
 | 
			
		||||
		ProfileID   int    `json:"proFileId"`
 | 
			
		||||
		ProfileID   int    `json:"profileId"`
 | 
			
		||||
	} `json:"sonarr"`
 | 
			
		||||
	CouchPotato struct {
 | 
			
		||||
		URL       string `json:"url"`
 | 
			
		||||
		APIKey    string `json:"apiKey"`
 | 
			
		||||
		ProfileID string `json:"profileId`
 | 
			
		||||
	} `json:"couchpotato"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//GetConfig gets the configuration values for the api using the file in the supplied configPath.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								pkg/service/couchpotato/admin.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pkg/service/couchpotato/admin.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
package couchpotato
 | 
			
		||||
							
								
								
									
										11
									
								
								pkg/service/couchpotato/couchpotato.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								pkg/service/couchpotato/couchpotato.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
package couchpotato
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/mattburchett/go_telegram/pkg/core/config"
 | 
			
		||||
	"github.com/yanzay/tbot/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Search performs the lookup actions within CouchPotato
 | 
			
		||||
func Search(m *tbot.Message, config config.Config) ([]response, error) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -178,7 +178,7 @@ func Add(callback string, config config.Config) string {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err.Error()
 | 
			
		||||
	}
 | 
			
		||||
	rootFolderData, err := ioutil.ReadAll(rootFolderLookuQuery.Body)
 | 
			
		||||
	rootFolderData, err := ioutil.ReadAll(rootFolderLookupQuery.Body)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err.Error()
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								pkg/service/telegram/handler.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								pkg/service/telegram/handler.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
package telegram
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/yanzay/tbot/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Handler creates the active Telegram handlers.
 | 
			
		||||
func (tb *Bot) Handler() {
 | 
			
		||||
 | 
			
		||||
	// Bot Healthcheck
 | 
			
		||||
	tb.Bot.HandleMessage("/ping", func(m *tbot.Message) {
 | 
			
		||||
		tb.Client.SendMessage(m.Chat.ID, "pong")
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	// telegram/sonar.go
 | 
			
		||||
	tb.Bot.HandleMessage("/s", tb.sonarrSearch)
 | 
			
		||||
	tb.Bot.HandleMessage("/admin sonarrStatus", tb.sonarrStatus)
 | 
			
		||||
 | 
			
		||||
	// telegram/testhandler.go
 | 
			
		||||
	tb.Bot.HandleMessage("/test", tb.testHandler)
 | 
			
		||||
 | 
			
		||||
	// telegram/admin.go
 | 
			
		||||
	tb.Bot.HandleMessage("/admin myID", tb.myID)
 | 
			
		||||
	tb.Bot.HandleMessage("/admin chatID", tb.chatID)
 | 
			
		||||
 | 
			
		||||
	// Help
 | 
			
		||||
	tb.Bot.HandleMessage("/help$", tb.helpHandler)
 | 
			
		||||
	tb.Bot.HandleMessage("/h$", tb.helpHandler)
 | 
			
		||||
 | 
			
		||||
	// Callback Handler
 | 
			
		||||
	tb.Bot.HandleCallback(tb.callbackHandler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// callbackHandler handles callbacks.
 | 
			
		||||
func (tb *Bot) callbackHandler(cq *tbot.CallbackQuery) {
 | 
			
		||||
	go func() {
 | 
			
		||||
		tb.Client.AnswerCallbackQuery(cq.ID, tbot.OptText("Request received."))
 | 
			
		||||
		tb.Client.DeleteMessage(tb.CallbackChatID, tb.CallbackMessageID)
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	if strings.Contains(cq.Data, "tv_") {
 | 
			
		||||
		tb.sonarrAdd(cq)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tb.Client.SendMessage(tb.CallbackChatID, cq.Data)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (tb *Bot) helpHandler(m *tbot.Message) {
 | 
			
		||||
	if !tb.whitelistHandler(m) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tb.Client.SendMessage(m.Chat.ID, "USAGE:\n\n/movie <Movie Name> or /m <Movie Name>\n/show <TV Show Name> or /s <TV Show Name>\n\nEXAMPLES:\n\n/s The Walking Dead\n/m Avatar")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (tb *Bot) whitelistHandler(m *tbot.Message) bool {
 | 
			
		||||
	for _, id := range tb.Config.Telegram.AuthorizedChats {
 | 
			
		||||
		if id == m.Chat.ID {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tb.Client.SendMessage(m.Chat.ID, "This bot is not authorized for use in this chat.")
 | 
			
		||||
	return false
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -11,6 +11,10 @@ import (
 | 
			
		||||
 | 
			
		||||
// Sonarr Search
 | 
			
		||||
func (tb *Bot) sonarrSearch(m *tbot.Message) {
 | 
			
		||||
	if !tb.whitelistHandler(m) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	text := strings.TrimPrefix(strings.TrimPrefix(m.Text, "/s"), " ")
 | 
			
		||||
	if len(text) == 0 {
 | 
			
		||||
		tb.Client.SendMessage(m.Chat.ID, "You must specify a show. Type /help for help.")
 | 
			
		||||
@@ -31,6 +35,11 @@ func (tb *Bot) sonarrSearch(m *tbot.Message) {
 | 
			
		||||
		}})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(request) == 0 {
 | 
			
		||||
		tb.Client.SendMessage(m.Chat.ID, "No results found, try harder.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	response, _ := tb.Client.SendMessage(m.Chat.ID, "Please select the show you would like to download.", tbot.OptInlineKeyboardMarkup(&tbot.InlineKeyboardMarkup{InlineKeyboard: inlineResponse}))
 | 
			
		||||
	tb.CallbackMessageID = response.MessageID
 | 
			
		||||
	tb.CallbackChatID = m.Chat.ID
 | 
			
		||||
@@ -56,6 +65,10 @@ func (tb *Bot) sonarrAdd(cq *tbot.CallbackQuery) {
 | 
			
		||||
 | 
			
		||||
// sonarrStatus queries Sonarr for it's system status information.
 | 
			
		||||
func (tb *Bot) sonarrStatus(m *tbot.Message) {
 | 
			
		||||
	if !tb.whitelistHandler(m) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if tb.adminCheck(m.From.ID, false) {
 | 
			
		||||
		request, err := sonarr.Status(m, tb.Config)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@ package telegram
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"log"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/mattburchett/go_telegram/pkg/core/config"
 | 
			
		||||
@@ -36,50 +35,3 @@ func (tb *Bot) New(token string) {
 | 
			
		||||
	tb.Bot.Start()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Handler creates the active Telegram handlers.
 | 
			
		||||
func (tb *Bot) Handler() {
 | 
			
		||||
 | 
			
		||||
	// Bot Healthcheck
 | 
			
		||||
	tb.Bot.HandleMessage("/ping", func(m *tbot.Message) {
 | 
			
		||||
		tb.Client.SendMessage(m.Chat.ID, "pong")
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	// telegram/sonar.go
 | 
			
		||||
	tb.Bot.HandleMessage("/s", tb.sonarrSearch)
 | 
			
		||||
	tb.Bot.HandleMessage("/admin sonarrStatus", tb.sonarrStatus)
 | 
			
		||||
 | 
			
		||||
	// telegram/testhandler.go
 | 
			
		||||
	tb.Bot.HandleMessage("/test", tb.testHandler)
 | 
			
		||||
 | 
			
		||||
	// telegram/admin.go
 | 
			
		||||
	tb.Bot.HandleMessage("/admin myID", tb.myID)
 | 
			
		||||
	tb.Bot.HandleMessage("/admin chatID", tb.chatID)
 | 
			
		||||
 | 
			
		||||
	// Help
 | 
			
		||||
	tb.Bot.HandleMessage("/help$", tb.helpHandler)
 | 
			
		||||
	tb.Bot.HandleMessage("/h$", tb.helpHandler)
 | 
			
		||||
 | 
			
		||||
	// Callback Handler
 | 
			
		||||
	tb.Bot.HandleCallback(tb.callbackHandler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// callbackHandler handles callbacks.
 | 
			
		||||
func (tb *Bot) callbackHandler(cq *tbot.CallbackQuery) {
 | 
			
		||||
	go func() {
 | 
			
		||||
		tb.Client.AnswerCallbackQuery(cq.ID, tbot.OptText("Request received."))
 | 
			
		||||
		tb.Client.DeleteMessage(tb.CallbackChatID, tb.CallbackMessageID)
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	if strings.Contains(cq.Data, "tv_") {
 | 
			
		||||
		tb.sonarrAdd(cq)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tb.Client.SendMessage(tb.CallbackChatID, cq.Data)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (tb *Bot) helpHandler(m *tbot.Message) {
 | 
			
		||||
	tb.Client.SendMessage(m.Chat.ID, "USAGE:\n\n/movie <Movie Name> or /m <Movie Name>\n/show <TV Show Name> or /s <TV Show Name>\n\nEXAMPLES:\n\n/s The Walking Dead\n/m Avatar")
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user