• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Civil / tg-simple-regex-antispam / 13070263183

31 Jan 2025 09:45AM UTC coverage: 0.0%. Remained the same
13070263183

Pull #5

github

Civil
Refactor and improve bot

 * Fixed small bug in forward action
 * package statefulFilters renamed to chains
 * generic badgerdb interface
 * add filter that counts repeated messages
 * add filter that checks if message is a story
 * add filter that checks if message was marked as spam
Pull Request #5: some improvements

0 of 1422 new or added lines in 20 files covered. (0.0%)

21 existing lines in 3 files now uncovered.

0 of 3756 relevant lines covered (0.0%)

0.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/actions/forwardToChat/action.go
1
package forwardToChat
2

3
import (
4
        "errors"
5
        "fmt"
6

7
        "github.com/mymmrac/telego"
8
        "go.uber.org/zap"
9

10
        "github.com/Civil/tg-simple-regex-antispam/actions/interfaces"
11
        interfaces2 "github.com/Civil/tg-simple-regex-antispam/filters/interfaces"
12
        "github.com/Civil/tg-simple-regex-antispam/filters/types/scoringResult"
13
        config2 "github.com/Civil/tg-simple-regex-antispam/helper/config"
14
        "github.com/Civil/tg-simple-regex-antispam/helper/tg"
15
)
16

17
type Action struct {
18
        logger *zap.Logger
19
        bot    *telego.Bot
20

21
        forwardToChatID int64
22
}
23

24
func (r *Action) Apply(_ interfaces2.StatefulFilter, _ *scoringResult.ScoringResult, _ telego.ChatID, _ []int64,
NEW
25
        _ int64, _ any) error {
×
26
        return ErrNotSupported
×
27
}
×
28

29
var ErrNotSupported = errors.New("not supported")
30

31
func (r *Action) GetName() string {
×
32
        return "forwardToChat"
×
33
}
×
34

35
func (r *Action) PerMessage() bool {
×
36
        return true
×
37
}
×
38

39
func (r *Action) ApplyToMessage(_ interfaces2.StatefulFilter, score *scoringResult.ScoringResult,
NEW
40
        msg *telego.Message, _ any) error {
×
41
        forwardParams := &telego.ForwardMessageParams{
×
42
                ChatID:              telego.ChatID{ID: r.forwardToChatID},
×
43
                FromChatID:          msg.Chat.ChatID(),
×
44
                MessageID:           msg.MessageID,
×
45
                DisableNotification: true,
×
46
        }
×
47

×
48
        forwardedMsg, err := r.bot.ForwardMessage(forwardParams)
×
49
        if err != nil {
×
50
                r.logger.Warn("failed to forward message, trying to copy it...", zap.Int64("forwardToChatID", r.forwardToChatID), zap.Int("messageID", msg.MessageID), zap.Error(err))
×
51
                var link string
×
52
                if msg.Chat.Type == telego.ChatTypeSupergroup {
×
53
                        link = fmt.Sprintf("https://t.me/c/%v/%v", msg.Chat.Username, msg.MessageID)
×
54
                } else {
×
55
                        link = fmt.Sprintf("https://t.me/c/%v/%v", msg.Chat.ID, msg.MessageID)
×
56
                }
×
57
                msgParams := &telego.SendMessageParams{
×
58
                        ChatID: telego.ChatID{ID: r.forwardToChatID},
×
59
                        Text:   fmt.Sprintf("Message (%v) from user %v:\n%v", link, msg.From.Username, msg.Text),
×
60
                }
×
61
                forwardedMsg, err = r.bot.SendMessage(msgParams)
×
62
        }
63

64
        if forwardedMsg == nil {
×
65
                return err
×
66
        }
×
67

NEW
68
        msgText := fmt.Sprintf("used\\_id: %v\nmessage\\_spam\\_score: %v\n\nban\\_reason:\n%v", forwardedMsg.From.ID,
×
NEW
69
                score.Score,
×
70
                score.Reason)
×
71
        err = tg.SendMarkdownMessage(r.bot, telego.ChatID{ID: r.forwardToChatID}, &forwardedMsg.MessageID, msgText)
×
72
        if err != nil {
×
73
                err = tg.SendMessage(r.bot, telego.ChatID{ID: r.forwardToChatID}, &forwardedMsg.MessageID, msgText)
×
74
        }
×
75

76
        return err
×
77
}
78

79
func New(logger *zap.Logger, bot *telego.Bot, config map[string]any) (interfaces.Action, error) {
×
80
        forwardToChatID, err := config2.GetOptionInt(config, "forwardToChatID")
×
81
        if err != nil {
×
82
                return nil, err
×
83
        }
×
84

85
        return &Action{
×
86
                logger:          logger,
×
87
                bot:             bot,
×
88
                forwardToChatID: int64(forwardToChatID),
×
89
        }, nil
×
90
}
91

92
func Help() string {
×
93
        return "deleteAndBan doesn't require any parameter"
×
94
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc