diff --git a/handle.go b/handle.go index 4def2ab..53cd463 100644 --- a/handle.go +++ b/handle.go @@ -1,7 +1,95 @@ package main -import tb "gopkg.in/tucnak/telebot.v2" +import ( + "fmt" + "github.com/spf13/viper" + tb "gopkg.in/tucnak/telebot.v2" + "strconv" +) +const ( + bStartContent string = "欢迎使用E5SubBot!\n请输入命令以启用" +) + +var ( + UserStatus map[int64]int + BindMaxNum int +) + +const ( + USNone = iota + USUnbind + USWillBind + USBind +) + +func init() { + //read config + viper.SetConfigName("config") + viper.AddConfigPath(".") + err := viper.ReadInConfig() + CheckErr(err) + + BindMaxNum = viper.GetInt("bindmax") + + UserStatus = make(map[int64]int) +} func bStart(m *tb.Message) { + bot.Send(m.Sender, bStartContent) +} +func bMy(m *tb.Message) { + data := QueryData(db, m.Chat.ID) + var inlineKeys = [][]tb.InlineButton{} + for _, u := range data { + inlineBtn := tb.InlineButton{ + Unique: u.refreshToken, + Text: u.refreshToken, + Data: u.uptime.Format("2006-01-02 15:04:05"), + } + bot.Handle(&inlineBtn, bMyinlineBtn) + inlineKeys = append(inlineKeys, []tb.InlineButton{inlineBtn}) + } + bot.Send(m.Chat, "Hello!", &tb.ReplyMarkup{InlineKeyboard: inlineKeys}) +} +func bMyinlineBtn(c *tb.Callback) { + bot.Send(c.Message.Chat, c.Data) + bot.Respond(c) +} +func bBind(m *tb.Message) { + tgId := m.Chat.ID + fmt.Println("Auth: " + strconv.FormatInt(tgId, 10)) + bot.Send(m.Chat, "授权链接: [点击直达](https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=4d7c8a8a-0baf-497e-9608-57d6abfccce7&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%2Fe5sub%2F&response_mode=query&scope=openid%20offline_access%20mail.read%20user.read)", tb.ModeMarkdown) + _, err := bot.Send(m.Chat, "授权后回复整个http://localhost", &tb.ReplyMarkup{ForceReply: true}) + if err == nil { + UserStatus[m.Chat.ID] = USWillBind + } } +func bAbout(m *tb.Message) { + bot.Send(m.Sender, bStartContent) +} +func bOnText(m *tb.Message) { + switch UserStatus[m.Chat.ID] { + case USNone: + { + bot.Send(m.Chat, "发送/bind开始绑定嗷") + return + } + case USWillBind: + { + if GetBindNum(m.Chat.ID) == BindMaxNum { + bot.Send(m.Chat, "已经达到最大可绑定数") + return + } + bot.Send(m.Chat, "正在绑定中……") + info := BindUser(m) + if info == "" { + bot.Send(m.Chat, "绑定成功!") + } else { + bot.Send(m.Chat, info) + } + } + case USBind: + + } +}