commands skeleton

This commit is contained in:
pyed 2016-06-19 22:33:57 +03:00
parent 844e316b24
commit 7ab33cbf78

View File

@ -11,13 +11,15 @@ import (
"github.com/pyed/transmission" "github.com/pyed/transmission"
) )
const VERSION = "0.0"
var ( var (
// flags // flags
token string BotToken string
master string Master string
url string RpcUrl string
username string Username string
password string Password string
// transmission // transmission
Client *transmission.Client Client *transmission.Client
@ -30,11 +32,11 @@ var (
// init flags // init flags
func init() { func init() {
// define arguments and parse them. // define arguments and parse them.
flag.StringVar(&token, "token", "", "Telegram bot token") flag.StringVar(&BotToken, "token", "", "Telegram bot token")
flag.StringVar(&master, "master", "", "Your telegram handler, So the bot will only respond to you") flag.StringVar(&Master, "master", "", "Your telegram handler, So the bot will only respond to you")
flag.StringVar(&url, "url", "http://localhost:9091/transmission/rpc", "Transmission RPC URL") flag.StringVar(&RpcUrl, "url", "http://localhost:9091/transmission/rpc", "Transmission RPC URL")
flag.StringVar(&username, "username", "", "Transmission username") flag.StringVar(&Username, "username", "", "Transmission username")
flag.StringVar(&password, "password", "", "Transmission password") flag.StringVar(&Password, "password", "", "Transmission password")
// set the usage message // set the usage message
flag.Usage = func() { flag.Usage = func() {
@ -45,8 +47,8 @@ func init() {
flag.Parse() flag.Parse()
// make sure that we have the two madatory arguments: telegram token & master's handler. // make sure that we have the two madatory arguments: telegram token & master's handler.
if token == "" || if BotToken == "" ||
master == "" { Master == "" {
fmt.Fprintf(os.Stderr, "Error: Mandatory argument missing!\n\n") fmt.Fprintf(os.Stderr, "Error: Mandatory argument missing!\n\n")
flag.Usage() flag.Usage()
os.Exit(1) os.Exit(1)
@ -57,9 +59,9 @@ func init() {
func init() { func init() {
// set transmission.Config, needed to establish a connection with transmission // set transmission.Config, needed to establish a connection with transmission
conf := transmission.Config{ conf := transmission.Config{
Address: url, Address: RpcUrl,
User: username, User: Username,
Password: password, Password: Password,
} }
// transmission.New() never returns an error, we will ignore it and test with client.Session.Update() // transmission.New() never returns an error, we will ignore it and test with client.Session.Update()
@ -71,7 +73,7 @@ func init() {
fmt.Fprintf(os.Stderr, "Transmission's Username or Password is wrong.\n\n") fmt.Fprintf(os.Stderr, "Transmission's Username or Password is wrong.\n\n")
} else { // any other error is probaby because of the URL } else { // any other error is probaby because of the URL
fmt.Fprintf(os.Stderr, "Error: Couldn't connect to: %s\n", url) fmt.Fprintf(os.Stderr, "Error: Couldn't connect to: %s\n", RpcUrl)
fmt.Fprintf(os.Stderr, "Make sure to pass the right full RPC URL e.g. http://localhost:9091/transmission/rpc\n\n") fmt.Fprintf(os.Stderr, "Make sure to pass the right full RPC URL e.g. http://localhost:9091/transmission/rpc\n\n")
} }
// send the vague error message too // send the vague error message too
@ -84,7 +86,7 @@ func init() {
func init() { func init() {
// authorize using the token // authorize using the token
var err error var err error
Bot, err = tgbotapi.NewBotAPI(token) Bot, err = tgbotapi.NewBotAPI(BotToken)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "Telegram Error: %s\n", err) fmt.Fprintf(os.Stderr, "Telegram Error: %s\n", err)
os.Exit(1) os.Exit(1)
@ -101,4 +103,63 @@ func init() {
} }
} }
func main() {} func main() {
for update := range Updates {
// ignore anyone other than 'master'
if update.Message.From.UserName != Master {
continue
}
// ignore edited messages
if update.Message == nil {
continue
}
// tokenize the update
tokens := strings.Split(update.Message.Text, " ")
command := strings.ToLower(tokens[0])
switch command {
case "list", "/list":
// list torrents
case "downs", "/downs":
// list downloading
case "active", "/active":
// list active torrents
case "errors", "/errors":
// list torrents with errors
case "trackers", "/trackers":
// list trackers
case "add", "/add":
// takes url to a torrent to add it
case "search", "/search":
// search for a torrent
case "latest", "/latest":
// get the latest torrents
case "info", "/info":
// gets info on specific torrent
case "stop", "/stop":
// stop one torrent or more
case "stopall", "/stopall":
// stops all the torrents
case "start", "/start":
// starts one torrent or more
case "startall", "/startall":
// starts all the torrents
case "stats", "/stats":
// print transmission stats
case "speed", "/speed":
// print current download and upload speeds
case "del", "/del":
// deletes a torrent but keep its data
case "deldata", "/deldata":
// deletes a torrents and its data
case "help", "/help":
// prints a help message
case "version", "/version":
// print transmission and transmission-telegram versions
default:
// no such command, try help
}
}
}