E5BotForSQLite/main.go
2020-03-29 12:51:39 +08:00

100 lines
2.2 KiB
Go

package main
import (
"database/sql"
"fmt"
"github.com/robfig/cron/v3"
"github.com/spf13/viper"
"golang.org/x/net/proxy"
tb "gopkg.in/tucnak/telebot.v2"
"net/http"
"strconv"
"time"
)
var (
BotToken string
Socks5 string
bot *tb.Bot
db *sql.DB
)
const (
dbDriverName = "mysql"
logo = `
______ _____ _ ____ _
| ____|| ____| | | | _ \ | |
| |__ | |__ _ _ | |__ | |_) | ___ | |_
| __| |___ \ | | | || '_ \ | _ < / _ \ | __|
| |____ ___) || |_| || |_) || |_) || (_) || |_
|______||____/ \__,_||_.__/ |____/ \___/ \__|
`
//dbName = "./data.db"
)
func init() {
//read config
fmt.Println(logo)
fmt.Println("Read Config……")
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
CheckErr(err)
BotToken = viper.GetString("bot_token")
Socks5 = viper.GetString("socks5")
//set bot
fmt.Println("Bot Settings……")
botsettings := tb.Settings{
Token: BotToken,
Poller: &tb.LongPoller{Timeout: 10 * time.Second},
}
//set socks5
if Socks5 != "" {
fmt.Println("Proxy:" + Socks5)
dialer, err := proxy.SOCKS5("tcp", Socks5, nil, proxy.Direct)
CheckErr(err)
httpTransport := &http.Transport{}
httpClient := &http.Client{Transport: httpTransport}
httpTransport.Dial = dialer.Dial
botsettings.Client = httpClient
}
//create bot
bot, err = tb.NewBot(botsettings)
if err != nil {
fmt.Println("Create Bot ERROR!")
return
}
fmt.Println("Bot: " + strconv.Itoa(bot.Me.ID) + " " + bot.Me.Username)
}
func main() {
BotStart()
}
func BotStart() {
MakeHandle()
TaskLaunch()
fmt.Println("Bot Start……")
bot.Start()
}
func MakeHandle() {
fmt.Println("Make Handle……")
bot.Handle("/start", bStart)
bot.Handle("/my", bMy)
bot.Handle("/bind", bBind)
bot.Handle("/unbind", bUnBind)
bot.Handle("/help", bHelp)
bot.Handle(tb.OnText, bOnText)
//bot.Handle(tb.InlineButton{Unique: ""})
}
func TaskLaunch() {
fmt.Println("Begin First SignTask……")
task := cron.New()
SignTask()
//每三小时执行一次
task.AddFunc("1 */3 * * *", SignTask)
// */1 * * * *
fmt.Println("Cron Task Start……")
task.Start()
}