Skip to content

Commit 44df8a9

Browse files
committed
wip
1 parent 7ffd1d9 commit 44df8a9

File tree

5 files changed

+85
-8
lines changed

5 files changed

+85
-8
lines changed

Dockerfile

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
FROM golang:1.17-alpine AS build
22
WORKDIR /app
33
COPY / /app
4+
RUN go test ./...
45
RUN go build -o servicebin cmd/main.go
56

67
FROM alpine:latest

go.mod

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,29 @@ module github.com/vahter-robot/backend
33
go 1.17
44

55
require (
6+
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
67
github.com/kelseyhightower/envconfig v1.4.0
78
github.com/leaq-ru/lib-graceful v1.0.1
89
github.com/rs/zerolog v1.25.0
10+
github.com/stretchr/testify v1.7.0
911
go.mongodb.org/mongo-driver v1.7.3
1012
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
13+
gopkg.in/tucnak/telebot.v2 v2.4.0
1114
)
1215

1316
require (
17+
github.com/davecgh/go-spew v1.1.1 // indirect
1418
github.com/go-stack/stack v1.8.0 // indirect
15-
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible // indirect
1619
github.com/golang/snappy v0.0.1 // indirect
1720
github.com/klauspost/compress v1.13.6 // indirect
1821
github.com/pkg/errors v0.9.1 // indirect
19-
github.com/stretchr/testify v1.7.0 // indirect
22+
github.com/pmezard/go-difflib v1.0.0 // indirect
2023
github.com/technoweenie/multipartstreamer v1.0.1 // indirect
2124
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
2225
github.com/xdg-go/scram v1.0.2 // indirect
2326
github.com/xdg-go/stringprep v1.0.2 // indirect
2427
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
2528
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
2629
golang.org/x/text v0.3.6 // indirect
27-
gopkg.in/tucnak/telebot.v2 v2.4.0 // indirect
2830
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
2931
)

go.sum

+3
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQ
4646
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
4747
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
4848
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
49+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
4950
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
5051
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
52+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
5153
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
5254
github.com/leaq-ru/lib-graceful v1.0.1 h1:8N6Gnz4wCkpLW4nDOTQ39EZU5DRrH/JmtpNdqI9XAyk=
5355
github.com/leaq-ru/lib-graceful v1.0.1/go.mod h1:F0n189lXn6CKNAM3B6lnuDdTDe5jzXNfoeqDa2ZRC9s=
@@ -142,6 +144,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
142144
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
143145
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
144146
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
147+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
145148
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
146149
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
147150
gopkg.in/tucnak/telebot.v2 v2.4.0 h1:nOeqOWnOAD3dzbKW+NRumd8zjj5vrWwSa0WRTxvgfag=

pkg/child_bot/service.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type service struct {
2828
userRepo *user.Repo
2929
peerRepo *peer.Repo
3030
childBotRepo *Repo
31-
keywordsLimit uint16
31+
keywordsLimitPerBot uint16
3232
inLimitPerKeyword uint16
3333
inLimitChars uint16
3434
outLimitChars uint16
@@ -59,7 +59,7 @@ func NewService(
5959
userRepo: userRepo,
6060
peerRepo: peerRepo,
6161
childBotRepo: childBotRepo,
62-
keywordsLimit: keywordsLimitPerBot,
62+
keywordsLimitPerBot: keywordsLimitPerBot,
6363
inLimitPerKeyword: inLimitPerKeyword,
6464
inLimitChars: inLimitChars,
6565
outLimitChars: outLimitChars,
@@ -576,7 +576,7 @@ func (s *service) handleOwnerGetKeywords(
576576
Банить
577577
%s
578578
579-
%s`, len(bot.Keywords), s.keywordsLimit, keywords, help))
579+
%s`, len(bot.Keywords), s.keywordsLimitPerBot, keywords, help))
580580
if err != nil {
581581
return fmt.Errorf("s.reply: %w", err)
582582
}
@@ -775,7 +775,7 @@ func ruToBool(s string) (bool, bool) {
775775

776776
func (s *service) parseKeywordsAndMode(in string) ([]Keyword, mode, bool) {
777777
words := strings.Split(in, delim)
778-
if len(words)-1%3 != 0 || len(words) < 4 {
778+
if (len(words)-1)%3 != 0 || len(words) < 4 {
779779
return nil, 0, false
780780
}
781781

@@ -832,7 +832,7 @@ func (s *service) parseKeywordsAndMode(in string) ([]Keyword, mode, bool) {
832832
Ban: ban,
833833
})
834834
}
835-
if len(keywords) > int(s.keywordsLimit) {
835+
if len(keywords) > int(s.keywordsLimitPerBot) {
836836
return nil, 0, false
837837
}
838838

pkg/child_bot/service_test.go

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package child_bot
2+
3+
import (
4+
"github.com/stretchr/testify/assert"
5+
"sort"
6+
"testing"
7+
)
8+
9+
func TestParseKeywordsAndModeOK(t *testing.T) {
10+
s := &service{
11+
keywordsLimitPerBot: 50,
12+
inLimitPerKeyword: 25,
13+
inLimitChars: 100,
14+
outLimitChars: 1000,
15+
}
16+
17+
kws, m, ok := s.parseKeywordsAndMode(`1
18+
===
19+
ваканс
20+
===
21+
Спасибо за предложение, но я не в поиске работы
22+
===
23+
да
24+
===
25+
реклама,прайс
26+
===
27+
Прайс на рекламу в канале:
28+
29+
1) Стартапы и бизнес
30+
100 рублей
31+
32+
Если цена устраивает, отправьте ссылку на ресурс который будем размещать
33+
===
34+
нет
35+
===
36+
сотруднич,партнер
37+
===
38+
Сотрудничество интересно, давайте обсудим
39+
===
40+
нет`)
41+
42+
assert.Len(t, kws, 3)
43+
44+
in1 := []string{"реклама", "прайс"}
45+
sort.Strings(in1)
46+
sort.Strings(kws[1].In)
47+
in2 := []string{"сотруднич", "партнер"}
48+
sort.Strings(in2)
49+
sort.Strings(kws[2].In)
50+
assert.Equal(t, []Keyword{{
51+
In: []string{"ваканс"},
52+
Out: "Спасибо за предложение, но я не в поиске работы",
53+
Ban: true,
54+
}, {
55+
In: in1,
56+
Out: `Прайс на рекламу в канале:
57+
58+
1) Стартапы и бизнес
59+
100 рублей
60+
61+
Если цена устраивает, отправьте ссылку на ресурс который будем размещать`,
62+
Ban: false,
63+
}, {
64+
In: in2,
65+
Out: "Сотрудничество интересно, давайте обсудим",
66+
Ban: false,
67+
}}, kws)
68+
69+
assert.Equal(t, OnlyFirst, m)
70+
assert.Equal(t, ok, true)
71+
}

0 commit comments

Comments
 (0)