E5BotForSQLite/bots/bots.go

96 lines
2.1 KiB
Go
Raw Normal View History

2021-03-11 12:57:30 +08:00
package bots
import (
"fmt"
2021-06-15 10:00:51 +08:00
"github.com/iyear/E5SubBot/config"
"github.com/iyear/E5SubBot/logger"
"github.com/iyear/E5SubBot/model"
2021-06-14 13:07:08 +08:00
"go.uber.org/zap"
2021-03-11 12:57:30 +08:00
"golang.org/x/net/proxy"
tb "gopkg.in/tucnak/telebot.v2"
"net/http"
"strconv"
"time"
)
var (
2021-06-15 10:00:51 +08:00
bot *tb.Bot
2021-03-11 12:57:30 +08:00
)
const (
2021-06-14 23:02:42 +08:00
logo = `
2021-03-11 12:57:30 +08:00
______ _____ _____ _ ____ _
| ____| ____/ ____| | | | _ \ | |
| |__ | |__| (___ _ _| |__ | |_) | ___ | |_
| __| |___ \\___ \| | | | '_ \| _ < / _ \| __|
| |____ ___) |___) | |_| | |_) | |_) | (_) | |_
|______|____/_____/ \__,_|_.__/|____/ \___/ \__|
`
)
func BotStart() {
2021-06-15 10:00:51 +08:00
var err error
2021-03-11 12:57:30 +08:00
fmt.Println(logo)
//read config
2021-06-15 10:00:51 +08:00
config.InitConfig()
//Init Logger
logger.InitLogger()
//InitDB
model.InitDB()
2021-06-15 18:27:28 +08:00
//Init Task
InitTask()
2021-03-11 12:57:30 +08:00
Poller := &tb.LongPoller{Timeout: 15 * time.Second}
2021-06-14 23:02:42 +08:00
spamPoller := tb.NewMiddlewarePoller(Poller, func(upd *tb.Update) bool {
2021-03-11 12:57:30 +08:00
if upd.Message == nil {
return true
}
if !upd.Message.Private() {
return false
}
return true
})
2021-06-14 23:02:42 +08:00
botSetting := tb.Settings{
2021-06-15 10:00:51 +08:00
Token: config.BotToken,
2021-06-14 23:02:42 +08:00
Poller: spamPoller,
2021-03-11 12:57:30 +08:00
}
//set socks5
2021-06-15 10:00:51 +08:00
if config.Socks5 != "" {
fmt.Println("Proxy:" + config.Socks5)
dialer, err := proxy.SOCKS5("tcp", config.Socks5, nil, proxy.Direct)
2021-03-11 12:57:30 +08:00
if err != nil {
2021-06-15 10:00:51 +08:00
zap.S().Errorw("failed to make dialer", "error", err, "socks5", config.Socks5)
2021-03-11 12:57:30 +08:00
}
httpTransport := &http.Transport{}
httpClient := &http.Client{Transport: httpTransport}
httpTransport.Dial = dialer.Dial
2021-06-14 23:02:42 +08:00
botSetting.Client = httpClient
2021-03-11 12:57:30 +08:00
}
//create bot
2021-06-14 23:02:42 +08:00
bot, err = tb.NewBot(botSetting)
2021-03-11 12:57:30 +08:00
if err != nil {
2021-06-14 23:02:42 +08:00
zap.S().Errorw("failed to create bot", "error", err)
2021-06-15 10:00:51 +08:00
return
2021-03-11 12:57:30 +08:00
}
2021-06-14 13:07:08 +08:00
fmt.Println("Bot: " + strconv.Itoa(bot.Me.ID) + " " + bot.Me.Username)
2021-06-15 10:00:51 +08:00
MakeHandle()
fmt.Println("Bot Start")
fmt.Println("------------")
bot.Start()
}
func MakeHandle() {
fmt.Println("Make Handlers……")
//所有用户
bot.Handle("/start", bStart)
bot.Handle("/my", bMy)
bot.Handle("/bind", bBind1)
bot.Handle("/unbind", bUnBind)
bot.Handle("/export", bExport)
bot.Handle("/help", bHelp)
bot.Handle(tb.OnText, bOnText)
//管理员
bot.Handle("/task", bTask)
bot.Handle("/log", bLog)
}