feat: support ban and kick
This commit is contained in:
@@ -18,6 +18,8 @@ var funcHandlers = map[string]func(*tgbotapi.Message, interface{}){
|
||||
"unbind": UnbindHandler,
|
||||
"get": GetHandler,
|
||||
"set": SetHandler,
|
||||
"kick": KickHandler,
|
||||
"ban": BanHandler,
|
||||
}
|
||||
|
||||
var callBackHandlers = map[string]func(tgbotapi.Update, defs.Command){
|
||||
@@ -56,7 +58,7 @@ func init() {
|
||||
log.Printf("Authorized on account %s", conf.Bot.Self.UserName)
|
||||
}
|
||||
|
||||
func Run(sendFunc func(string)) {
|
||||
func Run(sendFunc func(string), cmdFunc func(string) error) {
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
updates := conf.Bot.GetUpdatesChan(u)
|
||||
|
30
services/tgbot/kick.go
Normal file
30
services/tgbot/kick.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package tgbot
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"tg-mc/conf"
|
||||
"tg-mc/models"
|
||||
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
)
|
||||
|
||||
func KickHandler(m *tgbotapi.Message, i interface{}) {
|
||||
f, ok := i.(func(string) error)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
u, err := models.GetUserByTGID(m.From.ID)
|
||||
if err != nil {
|
||||
conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "您还没有绑定账号,请先绑定"))
|
||||
return
|
||||
}
|
||||
|
||||
err = f(fmt.Sprintf("kick %s", u.MCName))
|
||||
if err != nil {
|
||||
conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("已踢出用户 %s", u.MCName)))
|
||||
}
|
@@ -2,23 +2,31 @@ package tgbot
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"tg-mc/conf"
|
||||
"tg-mc/models"
|
||||
"tg-mc/services/utils"
|
||||
commonUtils "tg-mc/utils"
|
||||
"time"
|
||||
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
func SetHandler(m *tgbotapi.Message, i interface{}) {
|
||||
var a []string
|
||||
if t, ok := i.([]string); ok {
|
||||
a = t
|
||||
} else {
|
||||
a = commonUtils.GetArgs(m.CommandArguments())
|
||||
}
|
||||
|
||||
if !utils.IsAdmin(m) {
|
||||
tm := tgbotapi.NewMessage(m.Chat.ID, "您不是管理员,没有该权限")
|
||||
conf.Bot.Send(tm)
|
||||
return
|
||||
}
|
||||
a := commonUtils.GetArgs(m.CommandArguments())
|
||||
if len(a) != 3 {
|
||||
tm := tgbotapi.NewMessage(m.Chat.ID, "参数错误,样例:\n```\n/set username tgid status\n```")
|
||||
tm.ParseMode = "Markdown"
|
||||
@@ -46,5 +54,18 @@ func SetHandler(m *tgbotapi.Message, i interface{}) {
|
||||
return
|
||||
}
|
||||
conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "设置用户成功"))
|
||||
return
|
||||
}
|
||||
|
||||
func BanHandler(m *tgbotapi.Message, i interface{}) {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
randomNumber := rand.Intn(11)
|
||||
for {
|
||||
_, err := models.GetUserByTGID(int64(randomNumber))
|
||||
if err != nil {
|
||||
break
|
||||
} else {
|
||||
randomNumber = rand.Intn(11)
|
||||
}
|
||||
}
|
||||
SetHandler(m, []string{m.CommandArguments(), fmt.Sprintf("-%d", randomNumber), "2"})
|
||||
}
|
||||
|
Reference in New Issue
Block a user