Initial commit

This commit is contained in:
eleksir
2025-05-08 18:12:52 +03:00
commit b21e3c84c0
1553 changed files with 649819 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
package moon
import "time"
func RunAndBan() {
for {
// If user have both events, he is not spammer. So wipe him from unchecked events list, just for sure.
for _, chatid := range ChatList {
for _, AppearedMember := range ListAppearedMembers(chatid) {
for _, NewMember := range ListNewMembers(chatid) {
if AppearedMember == NewMember {
Log.Infof("Skip banning %d, because it has both events newMember and updateMember")
DeleteAppearedMember(chatid, AppearedMember)
DeleteNewMember(chatid, NewMember)
}
}
}
}
currentTime := time.Now().Unix()
// We would like to process only events that definitely older than 10 seconds!
for _, chatid := range ChatList {
for _, AppearedMember := range ListAppearedMembers(chatid) {
eventTimestamp := FindAppearedMember(chatid, AppearedMember)
eventTimeDelta := currentTime - eventTimestamp
// Looks like it is spammer!
if eventTimeDelta > 10 {
Log.Infof("Ban user that have no newChatMember message since chatMemberUpdated for more than 10 seconds")
squash(chatid, AppearedMember)
}
}
for _, NewMember := range ListNewMembers(chatid) {
eventTimestamp := FindAppearedMember(chatid, NewMember)
eventTimeDelta := currentTime - eventTimestamp
// Totally new members should not have chatMemberUpdated events.
if eventTimeDelta > 15 {
Log.Debugf("Clean newChatMember event record older than 10 seconds for user %s", NewMember)
DeleteNewMember(chatid, NewMember)
}
}
}
time.Sleep(10 * time.Second)
}
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */