Initial rewriting
Signed-off-by: Ettore Dreucci <ettore.dreucci@gmail.com>
This commit is contained in:
25
barandaBot.go
Normal file
25
barandaBot.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package main
|
||||
|
||||
import "log"
|
||||
|
||||
func main() {
|
||||
|
||||
cmdFlags, err := getFlags()
|
||||
if err != nil {
|
||||
log.Fatal("Error in parsing command line flags. Abort!")
|
||||
}
|
||||
|
||||
redisClient, err := redisInit(cmdFlags.redisAddr, cmdFlags.redisPwd, cmdFlags.redisDB)
|
||||
defer redisClient.Close()
|
||||
|
||||
bots, errors := botInit()
|
||||
for _, bot := range bots {
|
||||
bot.Stop()
|
||||
}
|
||||
|
||||
/*b.Handle("/hello", func(m *tb.Message) {
|
||||
b.Send(m.Sender, "hello world")
|
||||
})
|
||||
|
||||
b.Start()*/
|
||||
}
|
44
flags.go_old
Normal file
44
flags.go_old
Normal file
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type intSlice []int
|
||||
type stringSlice []string
|
||||
|
||||
func (i *intSlice) String() string {
|
||||
return fmt.Sprintf("%d", *i)
|
||||
}
|
||||
|
||||
func (i *stringSlice) String() string {
|
||||
return fmt.Sprint(*i)
|
||||
}
|
||||
|
||||
func (i *intSlice) Set(value string) error {
|
||||
tmp, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
*i = append(*i, -1)
|
||||
} else {
|
||||
*i = append(*i, tmp)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i *stringSlice) Set(value string) error {
|
||||
*i = append(*i, value)
|
||||
return nil
|
||||
}
|
||||
|
||||
func initFlags() (stringSlice, intSlice) {
|
||||
var tokens stringSlice
|
||||
var timeouts intSlice
|
||||
|
||||
flag.Var(&tokens, "t", "Bot token")
|
||||
flag.Var(&timeouts, "timeout", "Poller timeout in seconds")
|
||||
flag.Parse()
|
||||
|
||||
return tokens, timeouts
|
||||
}
|
20
redisAPI.go
Normal file
20
redisAPI.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/go-redis/redis"
|
||||
)
|
||||
|
||||
func redisInit(addr string, pwd string, db int) (*redis.Client, error) {
|
||||
redisClient := redis.NewClient(&redis.Options{
|
||||
Addr: addr,
|
||||
Password: pwd,
|
||||
DB: db,
|
||||
})
|
||||
err := redisClient.Ping().Err()
|
||||
if err != nil {
|
||||
log.Panicf("Error in connecting to redis instance: %v", err)
|
||||
}
|
||||
return redisClient, nil
|
||||
}
|
34
sys.go
Normal file
34
sys.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package main
|
||||
|
||||
import "flag"
|
||||
|
||||
type flags struct {
|
||||
redisAddr string
|
||||
redisPwd string
|
||||
redisDB int
|
||||
}
|
||||
|
||||
func getFlags() (flags, error) {
|
||||
|
||||
var cmdFlags flags
|
||||
|
||||
const (
|
||||
defaultAddr = "127.0.0.1:6379"
|
||||
addrUsage = "The address of the redis instance"
|
||||
defaultPwd = ""
|
||||
pwdUsage = "The password of the redis instance"
|
||||
defaultDB = 0
|
||||
dbUsage = "The database to be selected after connecting to redis instance"
|
||||
)
|
||||
|
||||
flag.StringVar(&(cmdFlags.redisAddr), "redisAddr", defaultAddr, addrUsage)
|
||||
flag.StringVar(&(cmdFlags.redisAddr), "a", defaultAddr, addrUsage+("shorthand"))
|
||||
flag.StringVar(&(cmdFlags.redisPwd), "redisPwd", defaultPwd, pwdUsage)
|
||||
flag.StringVar(&(cmdFlags.redisPwd), "p", defaultPwd, pwdUsage+("shorthand"))
|
||||
flag.IntVar(&(cmdFlags.redisDB), "redisDB", defaultDB, dbUsage)
|
||||
flag.IntVar(&(cmdFlags.redisDB), "d", defaultDB, dbUsage+("shorthand"))
|
||||
|
||||
flag.Parse()
|
||||
|
||||
return cmdFlags, nil
|
||||
}
|
29
telegramAPI.go
Normal file
29
telegramAPI.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
tb "gopkg.in/tucnak/telebot.v2"
|
||||
)
|
||||
|
||||
func botInit() ([]*tb.Bot, []error) {
|
||||
var bots []*tb.Bot
|
||||
var errors []error
|
||||
for i, token := range tokens {
|
||||
var timeout int
|
||||
if i < len(timeouts) {
|
||||
timeout = timeouts[i]
|
||||
} else {
|
||||
timeout = 10
|
||||
}
|
||||
tmpBot, tmpErr := tb.NewBot(tb.Settings{
|
||||
Token: token,
|
||||
Poller: &tb.LongPoller{Timeout: time.Duration(timeout) * time.Second},
|
||||
})
|
||||
|
||||
bots = append(bots, tmpBot)
|
||||
errors = append(errors, tmpErr)
|
||||
}
|
||||
|
||||
return bots, errors
|
||||
}
|
Reference in New Issue
Block a user