E5BotForSQLite/main.go

83 lines
1.6 KiB
Go
Raw Normal View History

2020-03-26 12:53:00 +08:00
package main
import (
2020-03-27 09:03:41 +08:00
"database/sql"
2020-03-26 12:53:00 +08:00
"fmt"
2020-03-28 15:22:23 +08:00
"github.com/robfig/cron/v3"
2020-03-26 12:53:00 +08:00
"github.com/spf13/viper"
2020-03-27 09:03:41 +08:00
"golang.org/x/net/proxy"
2020-03-26 12:53:00 +08:00
tb "gopkg.in/tucnak/telebot.v2"
2020-03-27 09:03:41 +08:00
"net/http"
2020-03-26 12:53:00 +08:00
"time"
)
var (
BotToken string
2020-03-27 09:03:41 +08:00
Socks5 string
2020-03-27 23:03:46 +08:00
bot *tb.Bot
db *sql.DB
2020-03-26 12:53:00 +08:00
)
2020-03-27 09:03:41 +08:00
const (
dbDriverName = "sqlite3"
dbName = "./data.db"
)
func init() {
2020-03-27 23:03:46 +08:00
//read config
2020-03-26 12:53:00 +08:00
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
2020-03-27 09:03:41 +08:00
CheckErr(err)
2020-03-26 12:53:00 +08:00
BotToken = viper.GetString("bot_token")
2020-03-27 09:03:41 +08:00
Socks5 = viper.GetString("socks5")
2020-03-27 23:03:46 +08:00
//set bot
2020-03-27 09:03:41 +08:00
botsettings := tb.Settings{
2020-03-26 12:53:00 +08:00
Token: BotToken,
Poller: &tb.LongPoller{Timeout: 10 * time.Second},
}
2020-03-27 23:03:46 +08:00
//set socks5
2020-03-27 09:03:41 +08:00
if Socks5 != "" {
fmt.Println("Proxy:" + Socks5)
dialer, err := proxy.SOCKS5("tcp", Socks5, nil, proxy.Direct)
2020-03-27 23:03:46 +08:00
CheckErr(err)
2020-03-27 09:03:41 +08:00
httpTransport := &http.Transport{}
httpClient := &http.Client{Transport: httpTransport}
httpTransport.Dial = dialer.Dial
botsettings.Client = httpClient
}
2020-03-27 23:03:46 +08:00
//create bot
bot, err = tb.NewBot(botsettings)
2020-03-27 09:03:41 +08:00
CheckErr(err)
2020-03-27 23:03:46 +08:00
//sqlite init
db, err = sql.Open(dbDriverName, dbName)
2020-03-27 09:03:41 +08:00
CheckErr(err)
2020-03-27 23:03:46 +08:00
CreateTB(db)
}
func main() {
BotStart()
2020-03-26 12:53:00 +08:00
}
2020-03-27 23:03:46 +08:00
func BotStart() {
2020-03-28 15:22:23 +08:00
MakeHandle()
TaskLaunch()
2020-03-27 23:03:46 +08:00
bot.Start()
2020-03-27 09:03:41 +08:00
}
2020-03-28 15:22:23 +08:00
func MakeHandle() {
2020-03-27 23:03:46 +08:00
bot.Handle("/start", bStart)
bot.Handle("/my", bMy)
bot.Handle("/bind", bBind)
2020-03-28 15:22:23 +08:00
bot.Handle("/unbind", bUnBind)
2020-03-27 23:03:46 +08:00
bot.Handle("/about", bAbout)
bot.Handle(tb.OnText, bOnText)
//bot.Handle(tb.InlineButton{Unique: ""})
2020-03-27 09:03:41 +08:00
}
2020-03-28 15:22:23 +08:00
func TaskLaunch() {
task := cron.New()
2020-03-28 22:01:36 +08:00
SignTask()
2020-03-28 15:22:23 +08:00
//每三小时执行一次
task.AddFunc("1 */3 * * *", SignTask)
// */1 * * * *
task.Start()
}