Initial commit
This commit is contained in:
124
internal/moon/chatMembersCollection.go
Normal file
124
internal/moon/chatMembersCollection.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package moon
|
||||
|
||||
import (
|
||||
int64int64collection "bunny-bot/internal/collection"
|
||||
"slices"
|
||||
"time"
|
||||
)
|
||||
|
||||
// FindNewMember looksup for given member in NewMembers.
|
||||
func FindNewMember(chatid int64, userid int64) int64 {
|
||||
return findMember(chatid, userid, NewMembers)
|
||||
}
|
||||
|
||||
// FindAppearedMember looksup for given member in AppearedMembers.
|
||||
func FindAppearedMember(chatid int64, userid int64) int64 {
|
||||
return findMember(chatid, userid, AppearedMembers)
|
||||
}
|
||||
|
||||
// FindSquashedMember looksup for given member in SquashedMembers.
|
||||
func FindSquashedMember(chatid int64, userid int64) int64 {
|
||||
return findMember(chatid, userid, SquashedMembers)
|
||||
}
|
||||
|
||||
// findMember looksup for given member in given collection.
|
||||
func findMember(chatid int64, userid int64, collection []*MembersCollection) int64 {
|
||||
for _, MembersCollection := range collection {
|
||||
if MembersCollection.ChatID == chatid {
|
||||
if timestamp, found := MembersCollection.Members.Get(userid); found {
|
||||
return timestamp
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
// ListNewMembers returns slice with members in NewMembers.
|
||||
func ListNewMembers(chatid int64) []int64 {
|
||||
return listMembers(chatid, NewMembers)
|
||||
}
|
||||
|
||||
// ListAppearedMembers returns slice with members in AppearedMembers.
|
||||
func ListAppearedMembers(chatid int64) []int64 {
|
||||
return listMembers(chatid, AppearedMembers)
|
||||
}
|
||||
|
||||
// ListSquashedMembers returns slice with members in SquashedMembers.
|
||||
func ListSquashedMembers(chatid int64) []int64 {
|
||||
return listMembers(chatid, SquashedMembers)
|
||||
}
|
||||
|
||||
// listMembers gets list of members from given collection.
|
||||
func listMembers(chatid int64, collection []*MembersCollection) []int64 {
|
||||
for _, MembersCollection := range collection {
|
||||
if MembersCollection.ChatID == chatid {
|
||||
return MembersCollection.Members.ListKeys()
|
||||
}
|
||||
}
|
||||
|
||||
return []int64{}
|
||||
}
|
||||
|
||||
// DeleteNewMember deletes given userid from given chaid NewMembers collection.
|
||||
func DeleteNewMember(chatid, userid int64) {
|
||||
deleteMember(chatid, userid, NewMembers)
|
||||
}
|
||||
|
||||
// DeleteNewMember deletes given userid from given chaid AppearedMembers collection.
|
||||
func DeleteAppearedMember(chatid, userid int64) {
|
||||
deleteMember(chatid, userid, AppearedMembers)
|
||||
}
|
||||
|
||||
// DeleteNewMember deletes given userid from given chaid SquashedMembers collection.
|
||||
func DeleteSquashedMember(chatid, userid int64) {
|
||||
deleteMember(chatid, userid, SquashedMembers)
|
||||
}
|
||||
|
||||
// deleteMembers deletes given member from given collection.
|
||||
func deleteMember(chatid int64, userid int64, collection []*MembersCollection) {
|
||||
for _, MembersCollection := range collection {
|
||||
if MembersCollection.ChatID == chatid {
|
||||
MembersCollection.Members.Delete(userid)
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// AddNewMember adds given userid from given chaid to NewMembers chat collection.
|
||||
func AddNewMember(chatid, userid int64) {
|
||||
addMember(chatid, userid, NewMembers)
|
||||
}
|
||||
|
||||
// AddAppearedMember adds given userid from given chaid to AppearedMembers chat collection.
|
||||
func AddAppearedMember(chatid, userid int64) {
|
||||
addMember(chatid, userid, AppearedMembers)
|
||||
}
|
||||
|
||||
// AddSquashedMember adds given userid from given chaid to SquashedMembers chat collection.
|
||||
func AddSquashedMember(chatid, userid int64) {
|
||||
addMember(chatid, userid, SquashedMembers)
|
||||
}
|
||||
|
||||
// addMember adds given userid from given chaid to given chat collection.
|
||||
func addMember(chatid, userid int64, collection []*MembersCollection) {
|
||||
// we have to create collection if it is not exist.
|
||||
if !slices.Contains(ChatList, chatid) {
|
||||
collection = append(
|
||||
collection,
|
||||
&MembersCollection{
|
||||
ChatID: chatid,
|
||||
Members: *int64int64collection.NewCollection(),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
for _, MembersCollection := range collection {
|
||||
if MembersCollection.ChatID == chatid {
|
||||
MembersCollection.Members.Set(userid, time.Now().Unix())
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user