99 "io"
1010 logger "log"
1111 "os"
12+ "strings"
13+ "sync"
1214
1315 tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
1416)
@@ -31,23 +33,37 @@ var log = logger.New(os.Stderr, "", logger.LstdFlags)
3133
3234// findTrollHouse return the troll house group name if is well-known
3335// 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
3639 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 )
4763 }
4864 }
4965
50- return "" , error
66+ return strings . Join ( houses , ", " )
5167}
5268
5369// messageEvent: return true if is a message event
@@ -132,12 +148,7 @@ func main() {
132148
133149 if newChatMemberEvent (& update ) {
134150 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 != "" {
141152 chatMember := tgbotapi.ChatMemberConfig {
142153 ChatID : update .Message .Chat .ID ,
143154 UserID : member .ID ,
0 commit comments