о проекте - 项目介绍 - परियोजना के बारे में - プロジェクトについて - acerca del proyecto - about project
Important
My best learning project to apply technology - from MVP to Enterprise Level 🚀
Telegram-Forwarder (UNIX-way) - forwards (or copies) messages from monitored channels and groups to target ones according to specified rules to obtain thematic digests.
$ git clone https://github.com/comerc/budva43.git
$ git submodule init
$ git submodule update
make
Direct install TDLib on host machine for best dev experience or use DevContainer (some restrictions) for build on Ubuntu.
Install by instruction with this options:
- Install built TDLib to /usr/local instead of placing the files to td/tdlib.
- Choose which compiler you want to use to build TDLib: clang (recommended)
only first time:
$ docker-compose build
...then "Reopen in Container"
- Dev Containers
- testcontainers
- mockery
- easyjson
- Docker Compose
- docker multi-stage build
- zsh + ohmyzsh
- golangci-lint + revive
- Makefile
- editorconfig
- git submodule
- goreleaser
- todo-highlight
- git-graph
- Redis
- go-clean-architecture
- SOLID
- DRY
- KISS
- YAGNI
- Dependency Injection
- design-patterns
- Notations Start & Run
- Graceful Shutdown
- Front Controller (microservice)
- CQRS
- samber/lo
- uptrace/bun
- gqlgen
- Grafana + Prometheus
- ClickHouse
- fiber
- zelenin/go-tdlib
- Code Style
- samber/mo
- samber/do
- samber/oops
- samber/slog-*
- testing: Time & Concurrency https://danp.net/posts/synctest-experiment/
- spf13/cobra
- go.mod replace
- comerc/spylog
- go test -race WARNING LC_DYSYMTAB golang/go#61229
- voidint/g
- go mod vendor
- vmihailenco/msgpack
- temporal
- anycable
- gocritic
- OpenTelemetry
- gostackparse
- grafana-loki
- pplog
- pprof
- time.AfterFunc() & context.AfterFunc()
- init() - dependency chain: config -> log -> spylog
- closures (currying and partial application)
- tail recursion
- errors.Is & errors.As
- generics
- PUB/SUB
- table (call-)tests
- integration tests
- separate config for e2e tests
- dynamic config engine.yml
- structured logs and errors
- termAutomator
- codecov.io
- snapshot tests
- LocalAI
- go-prompt
- Gemma for NLP?
- uber-go/automaxprocs
- uber-go/goleak
- magefile/mage
- oklog/ulid
- Go to Implementation
- jq
- task
- unused-interface-methods
- BDD
- godog
- grpc
- fuzz-test?
- error-log-or-return
- go-table-test-navigator
- jba/templatecheck
- OCP-VS-YAGNI
- github.com/urfave/cli
- CatBoost
- XGBoost
- LightGBM
- https://github.com/uber-go/nilaway
Register an application to obtain an api_id and api_hash
# ./config/.private/.env
BUDVA43__TELEGRAM__API_ID=1234567
BUDVA43__TELEGRAM__API_HASH=XXXXXXX
BUDVA43__TELEGRAM__PHONE_NUMBER=+78901234567
./config/app.yml
./config/engine.yml
$ task engine
$ task facade
// How to add InlineKeyboardButton
row := make([]*client.InlineKeyboardButton, 0)
row = append(row, &client.InlineKeyboardButton{
Text: "123",
Type: &client.InlineKeyboardButtonTypeUrl{
Url: "https://google.com",
},
})
rows := make([][]*client.InlineKeyboardButton, 0)
rows = append(rows, row)
_, err := tdlibClient.SendMessage(&client.SendMessageRequest{
ChatId: dstChatId,
InputMessageContent: &client.InputMessageText{
Text: formattedText,
DisableWebPagePreview: true,
ClearDraft: true,
},
ReplyMarkup: &client.ReplyMarkupInlineKeyboard{
Rows: rows,
},
})
- marperia/fwdbot
- wcsiu/telegram-client-demo + article
- Создание и развертывание ретранслятора Telegram каналов, используя Python и Heroku
Exclude #COIN
Include #TSLA
case #COIN
Check +
Other -
To -
case #TSLA
Check -
Other -
To +
case #ARK
Check -
Other +
To -
- Text
- Forward.SendCopy (or forward)
- and edit sync for double copy
- Forward.CopyOnce (edit sync)
- Forward.Indelible (delete sync)
- Filters Mode (see above)
- Forward.IncludeSubmatch
- ReplaceMyselfLinks + DeleteExternal
- ReplaceFragments (and not equal len)
- Sources.Link + Title
- Sources.Sign
- AutoAnswers
- MediaAlbum
- Forward.SendCopy (or forward)
- Forward.CopyOnce (edit sync)
- Forward.Indelible (delete sync)
To enable command autocompletion in Task, add to your ~/.zshrc
:
# Task completion
eval "$(task --completion zsh)"
Then reload your shell:
source ~/.zshrc
Or restart your terminal.
Now when you type task
and press Tab, you'll get a list of available tasks.