From a3fcc634efee35c8df5948766429bb1f536f7c3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=20=D0=A4?= =?UTF-8?q?=D0=B5=D0=B4=D0=BE=D1=80=D0=BE=D0=B2?= Date: Fri, 1 Apr 2022 23:17:55 +0700 Subject: [PATCH] add logic --- README.md | 9 +++++++++ go.mod | 7 +++++++ main.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 89fbbce..ce97a7d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ # all_tg_bot Бот подменяет @all на список участников чата + + Usage: + main [OPTIONS] + + Application Options: + -t, --token= Telegram api token + + Help Options: + -h, --help Show this help message diff --git a/go.mod b/go.mod index 61ab71a..2c64aac 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,10 @@ module git.user-penguin.space/vladimir/all_tg_bot go 1.18 + +require ( + github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible + github.com/umputun/go-flags v1.5.1 +) + +require github.com/technoweenie/multipartstreamer v1.0.1 // indirect diff --git a/main.go b/main.go index a3dd973..78b1dde 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,63 @@ package main -import "fmt" +import ( + "errors" + tgbot "github.com/go-telegram-bot-api/telegram-bot-api" + "github.com/umputun/go-flags" + "log" + "os" + "strings" +) + +const ( + tag = "@all" + allUsers = "@vo13crabs @disconecto @v9gel @KeyM_v2 @k_ukolov @iamembarrassed @freel_Fedorov_Kirill @butinmv" +) + +type Opts struct { + Token string `short:"t" long:"token" description:"Telegram api token"` +} + +var opts Opts func main() { - fmt.Println("Hello, World!") + run() +} + +func run() { + p := flags.NewParser(&opts, flags.PrintErrors|flags.PassDoubleDash|flags.HelpFlag) + p.SubcommandsOptional = true + if _, err := p.Parse(); err != nil { + if err.(*flags.Error).Type != flags.ErrHelp { + log.Println(errors.New("[ERROR] cli error: " + err.Error())) + } + os.Exit(2) + } + + bot, err := tgbot.NewBotAPI(opts.Token) + if err != nil { + panic(err) + } + + u := tgbot.NewUpdate(0) + u.Timeout = 60 + + updates, err := bot.GetUpdatesChan(u) + if err != nil { + panic(err) + } + + for update := range updates { + + if update.Message == nil { + continue + } + + text := update.Message.Text + chatID := update.Message.Chat.ID + + if strings.Contains(strings.ToLower(text), tag) { + _, _ = bot.Send(tgbot.NewMessage(chatID, allUsers)) + } + } }