diff --git a/mcbot b/mcbot deleted file mode 100755 index 8d2fb57..0000000 Binary files a/mcbot and /dev/null differ diff --git a/models/user.go b/models/user.go index b61e8d3..51eccff 100644 --- a/models/user.go +++ b/models/user.go @@ -9,7 +9,7 @@ import ( type User struct { gorm.Model - TGID int64 + TGID int64 `gorm:"unique"` MCName string Status int // 0: pending, 1: normal, 2: banned } @@ -38,15 +38,13 @@ func GetUserByMCName(mcName string) (user User, err error) { return } -func CreateUserIfNotExist(tgID int64, u *User) (err error) { - err = database.GetDB().Where( - &User{TGID: tgID}, - ).FirstOrCreate(&u).Error +func CreateUser(u *User) (err error) { + err = database.GetDB().Create(&u).Error return } func (u *User) Delete(tgID int64) error { return database.GetDB().Where( &User{TGID: tgID}, - ).Delete(&u).Error + ).Unscoped().Delete(&u).Error } diff --git a/services/mc/helper.go b/services/mc/helper.go index 973dae7..56a39ec 100644 --- a/services/mc/helper.go +++ b/services/mc/helper.go @@ -32,7 +32,7 @@ func GetLeftPlayer(m chat.Message) (userName string, err error) { return } -func HandleJoinGame(userName string) { +func HandleJoinGame(userName string, mention bool) { u, err := models.GetUserByMCName(userName) if err != nil { @@ -42,7 +42,9 @@ func HandleJoinGame(userName string) { switch u.Status { case StatusNormal: - SendMsgToPlayer("欢迎回来!", userName) + if mention { + SendMsgToPlayer("欢迎回来!", userName) + } case StatusPending: SendMsgToPlayer("你还没有绑定 Telegram 哦, 5秒后你将会被踢出。请在群组中发送 /bind <你的 MC 用户名> 进行绑定。", userName) time.Sleep(5 * time.Second) @@ -83,7 +85,7 @@ func CronKick() { utils.CronStart(func() { users := su.GetAlivePlayerList() for _, u := range users { - kickPlayer(u) + HandleJoinGame(u, false) } }) } diff --git a/services/mc/mc.go b/services/mc/mc.go index 7003076..15cd1d0 100644 --- a/services/mc/mc.go +++ b/services/mc/mc.go @@ -80,12 +80,12 @@ func onSystemMsg(msg chat.Message, overlay bool) error { logrus.Error("user join error ", err) break } - go HandleJoinGame(userName) + go HandleJoinGame(userName, true) default: break } - m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) - conf.Bot.Send(m) + // m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + // conf.Bot.Send(m) }() return nil } diff --git a/services/tgbot/bot.go b/services/tgbot/bot.go index 750ceb3..e861b1a 100644 --- a/services/tgbot/bot.go +++ b/services/tgbot/bot.go @@ -60,11 +60,16 @@ func Run(sendFunc func(string)) { } if m.Command() == "bind" { logrus.Infof("id is %d", m.Chat.ID) - models.CreateUserIfNotExist(m.From.ID, &models.User{ + err := models.CreateUser(&models.User{ TGID: m.From.ID, MCName: m.CommandArguments(), Status: 1, }) + if err != nil { + m := tgbotapi.NewMessage(m.Chat.ID, "绑定失败, err: "+err.Error()) + conf.Bot.Send(m) + return + } m := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("绑定成功,你的MCID是%v", m.CommandArguments())) conf.Bot.Send(m) @@ -88,6 +93,18 @@ func Run(sendFunc func(string)) { conf.Bot.Send(m) return } + if m.Command() == "get" { + logrus.Infof("id is %d", m.Chat.ID) + u, err := models.GetUserByTGID(m.From.ID) + if err != nil { + m := tgbotapi.NewMessage(m.Chat.ID, "你还没有绑定") + conf.Bot.Send(m) + return + } + m := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("你的MCID是%v", u.MCName)) + conf.Bot.Send(m) + return + } }(update.Message) } }