49 lines
935 B
Go
49 lines
935 B
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/disgoorg/disgo/discord"
|
|
"github.com/disgoorg/disgo/handler"
|
|
)
|
|
|
|
func PingHandler(e *handler.CommandEvent) error {
|
|
|
|
now := time.Now()
|
|
latency := now.Sub(e.CreatedAt())
|
|
msLatency := latency.Milliseconds()
|
|
if msLatency < 0 {
|
|
msLatency = -msLatency
|
|
}
|
|
|
|
// Gateway latency
|
|
var gwMs int64
|
|
if gw := e.Client().Gateway(); gw != nil {
|
|
gwMs = gw.Latency().Milliseconds()
|
|
} else {
|
|
gwMs = 0
|
|
}
|
|
|
|
lat := float64(msLatency)
|
|
if lat > 1500 {
|
|
lat = 1500
|
|
}
|
|
red := int((lat / 1500) * 255)
|
|
green := 255 - red
|
|
color := (red << 16) | (green << 8)
|
|
|
|
embed := discord.NewEmbedBuilder().
|
|
SetTitle("🏓 Pong!").
|
|
AddField("Interaction latency", fmt.Sprintf("%d ms", msLatency), true).
|
|
AddField("Gateway latency", fmt.Sprintf("%d ms", gwMs), true).
|
|
SetColor(color).
|
|
Build()
|
|
|
|
return e.CreateMessage(
|
|
discord.NewMessageCreateBuilder().
|
|
SetEmbeds(embed).
|
|
Build(),
|
|
)
|
|
}
|