-
Notifications
You must be signed in to change notification settings - Fork 3
/
dedupe.go
38 lines (30 loc) · 1001 Bytes
/
dedupe.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package internal
import (
"time"
"github.com/WelcomerTeam/Discord/discord"
)
func createDedupeMemberAddKey(guildID discord.Snowflake, memberID discord.Snowflake) string {
return "MA:" + guildID.String() + ":" + memberID.String()
}
func createDedupeMemberRemoveKey(guildID discord.Snowflake, memberID discord.Snowflake) string {
return "MR:" + guildID.String() + ":" + memberID.String()
}
// AddMemberDedupe creates a new dedupe.
func (sg *Sandwich) AddDedupe(key string) {
sg.dedupeMu.Lock()
sg.Dedupe[key] = time.Now().Add(memberDedupeExpiration).Unix()
sg.dedupeMu.Unlock()
}
// CheckMemberDedupe returns if a dedupe is set. If true, event should be ignored.
func (sg *Sandwich) CheckDedupe(key string) bool {
sg.dedupeMu.RLock()
value := sg.Dedupe[key]
sg.dedupeMu.RUnlock()
return time.Now().Unix() < value && value != 0
}
// RemoveMemberDedupe removes a dedupe.
func (sg *Sandwich) RemoveDedupe(key string) {
sg.dedupeMu.Lock()
delete(sg.Dedupe, key)
sg.dedupeMu.Unlock()
}