summaryrefslogtreecommitdiff
path: root/internal/data/chat.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/data/chat.go')
-rw-r--r--internal/data/chat.go29
1 files changed, 24 insertions, 5 deletions
diff --git a/internal/data/chat.go b/internal/data/chat.go
index 9d2443d..ae5dc67 100644
--- a/internal/data/chat.go
+++ b/internal/data/chat.go
@@ -1,6 +1,9 @@
package data
-import "github.com/kyren223/eko/pkg/snowflake"
+import (
+ "github.com/kyren223/eko/pkg/snowflake"
+ "github.com/kyren223/eko/pkg/utils"
+)
// Represents an Eko Network, equivalent to a "discord server".
type Network struct {
@@ -23,11 +26,27 @@ type Signal struct {
// Represents a message
type Message struct {
- Id snowflake.ID
- SenderId snowflake.ID
+ Id snowflake.ID
+ SenderId snowflake.ID
FrequencyId snowflake.ID
- NetworkId snowflake.ID
- Contents string
+ NetworkId snowflake.ID
+ Contents string
+}
+
+func (a Message) CmpTimestamp(b Message) int {
+ cmpTime := a.Id.Time() - b.Id.Time()
+ if cmpTime != 0 {
+ return int(utils.Clamp(cmpTime, -1, 1))
+ }
+ cmpStep := a.Id.Step() - b.Id.Step()
+ if cmpStep != 0 {
+ return int(utils.Clamp(cmpStep, -1, 1))
+ }
+ cmpNode := a.Id.Node() - b.Id.Node()
+ if cmpNode != 0 {
+ return int(utils.Clamp(cmpNode, -1, 1))
+ }
+ return 0
}
// Represents an Eko User