9
9
"io"
10
10
logger "log"
11
11
"os"
12
+ "strings"
13
+ "sync"
12
14
13
15
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
14
16
)
@@ -31,23 +33,37 @@ var log = logger.New(os.Stderr, "", logger.LstdFlags)
31
33
32
34
// findTrollHouse return the troll house group name if is well-known
33
35
// otherwise, returns a empty string
34
- func findTrollHouse (bot * tgbotapi.BotAPI , userID int ) (string , error ) {
35
- var error error
36
+ func findTrollHouses (bot * tgbotapi.BotAPI , userID int ) string {
37
+ ch := make (chan string , len (trollGroups ))
38
+ var wait sync.WaitGroup
36
39
for _ , trollGroup := range trollGroups {
37
- c , err := bot .GetChatMember (tgbotapi.ChatConfigWithUser {
38
- SuperGroupUsername : trollGroup ,
39
- UserID : userID ,
40
- })
41
- if err != nil {
42
- error = err
43
- continue
44
- }
45
- if c .IsMember () || c .IsCreator () || c .IsAdministrator () {
46
- return trollGroup , nil
40
+ wait .Add (1 )
41
+ go func (group string ) {
42
+ defer wait .Done ()
43
+ c , _ := bot .GetChatMember (tgbotapi.ChatConfigWithUser {
44
+ SuperGroupUsername : group ,
45
+ UserID : userID ,
46
+ })
47
+ if c .IsMember () || c .IsCreator () || c .IsAdministrator () {
48
+ ch <- group
49
+ } else {
50
+ ch <- ""
51
+ }
52
+ }(trollGroup )
53
+
54
+ }
55
+ go func () {
56
+ wait .Wait ()
57
+ close (ch )
58
+ }()
59
+ var houses []string
60
+ for house := range ch {
61
+ if house != "" {
62
+ houses = append (houses , house )
47
63
}
48
64
}
49
65
50
- return "" , error
66
+ return strings . Join ( houses , ", " )
51
67
}
52
68
53
69
// messageEvent: return true if is a message event
@@ -132,12 +148,7 @@ func main() {
132
148
133
149
if newChatMemberEvent (& update ) {
134
150
for _ , member := range * update .Message .NewChatMembers {
135
- trollHouse , err := findTrollHouse (bot , member .ID )
136
- if err != nil {
137
- log .Printf ("[!] findTrollHouse returned a error: %v" , err )
138
- }
139
-
140
- if trollHouse != "" {
151
+ if trollHouse := findTrollHouses (bot , member .ID ); trollHouse != "" {
141
152
chatMember := tgbotapi.ChatMemberConfig {
142
153
ChatID : update .Message .Chat .ID ,
143
154
UserID : member .ID ,
0 commit comments