125 lines
3.6 KiB
Go
125 lines
3.6 KiB
Go
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())
|
|
}
|
|
}
|
|
}
|