From 8f7bb8feba71fd3b2ca067b650879376f7cfa300 Mon Sep 17 00:00:00 2001 From: Vaala Cat Date: Sun, 6 Aug 2023 00:35:54 +0800 Subject: [PATCH] upgrade --- .gitignore | 3 +- conf/env.go | 15 ++++---- db.sqlite | Bin 12288 -> 0 bytes go.mod | 7 ++-- go.sum | 13 +++++-- services/mc/mc.go | 2 +- services/tgbot/bot.go | 84 ++++++++++++++++++++++++++++++++++++++++++ services/utils/tg.go | 6 +++ utils/args.go | 7 ++++ 9 files changed, 121 insertions(+), 16 deletions(-) delete mode 100644 db.sqlite create mode 100644 utils/args.go diff --git a/.gitignore b/.gitignore index 25dc6c9..b5b1db9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .env run.sh -mcbot \ No newline at end of file +mcbot +*.sqlite \ No newline at end of file diff --git a/conf/env.go b/conf/env.go index 16c64dd..57c90d5 100644 --- a/conf/env.go +++ b/conf/env.go @@ -6,13 +6,14 @@ import ( ) type botSettings struct { - HTTPProxy string `env:"HTTP_PROXY"` - BotToken string `env:"BOT_TOKEN"` - MCServer string `env:"MC_SERVER"` - MCBotName string `env:"MC_BOT_NAME"` - GroupID int64 `env:"GROUP_ID"` - DBPath string `env:"DB_PATH"` - BotAPI string `env:"TG_BOT_API"` + HTTPProxy string `env:"HTTP_PROXY"` + BotToken string `env:"BOT_TOKEN"` + MCServer string `env:"MC_SERVER"` + MCBotName string `env:"MC_BOT_NAME"` + GroupID int64 `env:"GROUP_ID"` + DBPath string `env:"DB_PATH"` + BotAPI string `env:"TG_BOT_API"` + AdminID []int64 `env:"ADMIN_ID"` } var ( diff --git a/db.sqlite b/db.sqlite deleted file mode 100644 index 8e31b194958fc1ae887faf5f7afb6e655a756f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI#Jx_x`7zgl!YMPk%vavp6Nr;PaRZ$rlYgO!E2gA|wv>_>I;F_?uAJdQEr|^zS ziivJc&Hs`+o`dJ!eoXiLG)NWG?5)URMQ7qfSeCdV5<=Lzc64ou>F+fi{j^%~U!g5d zXP<}qt9|q#jxThB0s#m>00Izz00bZa0SG_<0ucCDfr;I9&K+yDpXLcyX;MYYl8Z7* zc)^O3C{}g9a}x&sD4_oEHh3ZVTb`tcA;~&h_T+ZFbXS*F*Kr(c{i@>0g6ovJvA<^> z`PYM>8B0Aqy`(f(Jm \n```") + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + return + } + if a[0] == "tgid" { + tgid, err := strconv.ParseInt(a[1], 10, 64) + if err != nil { + conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "ID错误,应该为int64")) + return + } + u, err := models.GetUserByTGID(tgid) + if err != nil { + tm := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("查询出错,err:\n```\n%+v\n```", err)) + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + return + } + tm := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("用户信息:\n```\n%+v\n```", u)) + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + } + if a[0] == "username" { + u, err := models.GetUserByMCName(a[1]) + if err != nil { + tm := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("查询出错,err:\n```\n%+v\n```", err)) + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + return + } + tm := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("用户信息:\n```\n%+v\n```", u)) + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + } + return + } logrus.Infof("id is %d", m.Chat.ID) u, err := models.GetUserByTGID(m.From.ID) if err != nil { @@ -113,6 +161,42 @@ func Run(sendFunc func(string)) { conf.Bot.Send(m) return } + if m.Command() == "set" { + 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" + conf.Bot.Send(tm) + return + } + tgid, err := strconv.ParseInt(a[1], 10, 64) + if err != nil { + conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "ID错误,应该为int64")) + return + } + status, err := strconv.ParseInt(a[2], 10, 64) + if err != nil || !lo.Contains([]int64{0, 1, 2}, status) { + conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "Status错误,应该为0(Pending),1(Normal),2(Banned)")) + return + } + if err := models.CreateUser(&models.User{ + TGID: tgid, + MCName: a[0], + Status: int(status), + }); err != nil { + tm := tgbotapi.NewMessage(m.Chat.ID, fmt.Sprintf("创建用户错误,err:\n```\n%+v\n```", err)) + tm.ParseMode = "Markdown" + conf.Bot.Send(tm) + return + } + conf.Bot.Send(tgbotapi.NewMessage(m.Chat.ID, "设置用户成功")) + return + } }(update.Message) } } diff --git a/services/utils/tg.go b/services/utils/tg.go index 67a3ece..bfade3e 100644 --- a/services/utils/tg.go +++ b/services/utils/tg.go @@ -4,6 +4,7 @@ import ( "tg-mc/conf" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + "github.com/samber/lo" ) func SendMsg(msg string) error { @@ -11,3 +12,8 @@ func SendMsg(msg string) error { _, err := conf.Bot.Send(msgT) return err } + +func IsAdmin(m *tgbotapi.Message) bool { + return lo.Contains(conf.GetBotSettings().AdminID, m.From.ID) || + lo.Contains(conf.GetBotSettings().AdminID, m.Chat.ID) +} diff --git a/utils/args.go b/utils/args.go new file mode 100644 index 0000000..977fdaf --- /dev/null +++ b/utils/args.go @@ -0,0 +1,7 @@ +package utils + +import "strings" + +func GetArgs(i string) []string { + return strings.Split(i, " ") +}