From a42cb2db322bc7af6323aca61266c4b7fe21b5f5 Mon Sep 17 00:00:00 2001 From: Yiyang Kang Date: Mon, 21 Nov 2022 13:43:00 +0800 Subject: [PATCH] feat: add /me and /chat command --- bot.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/bot.go b/bot.go index 5142d73..c5015c9 100644 --- a/bot.go +++ b/bot.go @@ -35,6 +35,9 @@ func initBot() (*tele.Bot, error) { b.Handle("/start", handleStartCmd) b.Handle("/traffic", handleTrafficCmd) + b.Handle("/me", handleUserInfoCmd) + b.Handle("/chat", handleChatInfoCmd) + return b, nil } @@ -118,3 +121,56 @@ func fmtTraffic(r stats.VnstatTrafficRecord) string { return fmt.Sprintf("%.2f GiB", float64(biggest)/1024/1024/1024) } + +func handleUserInfoCmd(c tele.Context) error { + u := c.Sender() + if u == nil { + return c.Reply("Unknown.") + } + + replyText := []string{ + `*User Info*`, + "```", + fmt.Sprintf(`ID: %d`, u.ID), + fmt.Sprintf(`Username: %s`, u.Username), + fmt.Sprintf(`FirstName: %s`, u.FirstName), + fmt.Sprintf(`LastName: %s`, u.LastName), + fmt.Sprintf(`LanguageCode: %s`, u.LanguageCode), + fmt.Sprintf(`IsBot: %t`, u.IsBot), + fmt.Sprintf(`IsPremium: %t`, u.IsPremium), + "```", + } + return c.Reply(strings.Join(replyText, "\n"), &tele.SendOptions{ParseMode: tele.ModeMarkdown}) +} + +func handleChatInfoCmd(c tele.Context) error { + chat := c.Chat() + if chat == nil { + return c.Reply("Unknown.") + } + loc := "" + if chat.ChatLocation != nil { + loc = chat.ChatLocation.Address + } + + replyText := []string{ + `*Chat Info*`, + "```", + fmt.Sprintf(`ID: %d`, chat.ID), + fmt.Sprintf(`Type: %s`, chat.Type), + fmt.Sprintf(`Title: %s`, chat.Title), + fmt.Sprintf(`FirstName: %s`, chat.FirstName), + fmt.Sprintf(`LastName: %s`, chat.LastName), + fmt.Sprintf(`Username: %s`, chat.Username), + fmt.Sprintf(`SlowMode: %d`, chat.SlowMode), + fmt.Sprintf(`StickerSet: %s`, chat.StickerSet), + fmt.Sprintf(`CanSetStickerSet: %t`, chat.CanSetStickerSet), + fmt.Sprintf(`LinkedChatID: %d`, chat.LinkedChatID), + fmt.Sprintf(`ChatLocation: %s`, loc), + fmt.Sprintf(`Private: %t`, chat.Private), + fmt.Sprintf(`Protected: %t`, chat.Protected), + fmt.Sprintf(`NoVoiceAndVideo: %t`, chat.NoVoiceAndVideo), + "```", + } + return c.Reply(strings.Join(replyText, "\n"), &tele.SendOptions{ParseMode: tele.ModeMarkdown}) +}