E5BotForSQLite/main.go
2020-03-27 09:03:41 +08:00

82 lines
1.5 KiB
Go

package main
import (
"database/sql"
"fmt"
"github.com/spf13/viper"
"golang.org/x/net/proxy"
tb "gopkg.in/tucnak/telebot.v2"
"log"
"net/http"
"os"
"time"
)
var (
BotToken string
Socks5 string
)
const (
dbDriverName = "sqlite3"
dbName = "./data.db"
)
func init() {
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
CheckErr(err)
BotToken = viper.GetString("bot_token")
Socks5 = viper.GetString("socks5")
}
func main() {
botsettings := tb.Settings{
Token: BotToken,
Poller: &tb.LongPoller{Timeout: 10 * time.Second},
}
if Socks5 != "" {
fmt.Println("Proxy:" + Socks5)
dialer, err := proxy.SOCKS5("tcp", Socks5, nil, proxy.Direct)
if err != nil {
log.Fatal("Error creating dialer, aborting.")
}
httpTransport := &http.Transport{}
httpClient := &http.Client{Transport: httpTransport}
httpTransport.Dial = dialer.Dial
botsettings.Client = httpClient
}
db, err := sql.Open(dbDriverName, dbName)
CheckErr(err)
if !FileExist(dbName) {
CreateTB(db)
}
b, err := tb.NewBot(botsettings)
CheckErr(err)
//b.Handle(tb.OnText, func(m *tb.Message) {
// b.Send(m.Sender, "hello world")
//})
b.Start()
}
func CheckErr(err error) bool {
if err != nil {
log.Println(err)
fmt.Println("error: ", err.Error())
panic(err)
return false
}
return true
}
func FileExist(Path string) bool {
if _, err := os.Stat(Path); err != nil {
if os.IsNotExist(err) {
return false
} else {
CheckErr(err)
}
}
return true
}