forked from BlackWolfWoof/yagpdb-cc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
snowflake_converter.yag
63 lines (57 loc) · 2.63 KB
/
snowflake_converter.yag
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{{/*
Trigger: snowflake
Trigger Type: Command
Usage:
snowflake ID/Mention
snowflake ID/mention ID/mention
Copyright (c): Black Wolf, 2021
License: MIT
Repository: https://github.com/BlackWolfWoof/yagpdb-cc/
*/}}
{{$prefix := index (reFindAllSubmatches `Prefix of \x60\d+\x60: \x60(.+)\x60` (exec "prefix")) 0 1}}
{{$args := parseArgs 1 (print $prefix "snowflake <ID> <ID (optional)>")
(carg "userid" "snowflake1")
(carg "userid" "snowflake2")}}
{{$first := div ($args.Get 0) 4194304|mult 1000000|toDuration}}
{{$second := div ($args.Get 1) 4194304|mult 1000000|toDuration}}
{{define "convert"}}
{{$time1 := div .Input 4194304|mult 1000000|toDuration|.epoch.Add}}
{{$days := fdiv (.ctime.Sub $time1).Hours 24}}
{{$y := fdiv $days 365.25|roundFloor|toFloat}}
{{$mo := (sub (fdiv $days 30.417) (mult $y 12))|roundFloor|toFloat}}
{{$d := toFloat (sub $days (add (mult $y 365.25) (mult $mo 30.417)))}}
{{.Set "e" (print "🗓️**<t:" $time1.Unix ":d>** ⏱️<t:" $time1.Unix ":t>\u200A⌛\u200A" (toInt $y) "Y " (toInt $mo) "M " (toInt $d) "D\n" (humanizeDurationSeconds (.ctime.Sub $time1)))}}
{{.Set "timeout" $time1}}
{{end}}
{{$ctime := currentTime}}
{{if not ($args.Get 1)}}
{{$e := sdict "Input" ($args.Get 0) "epoch" .DiscordEpoch "ctime" $ctime}}
{{template "convert" $e}}
{{$e := $e.e}}
{{sendMessage nil (cembed
"title" "Snowflake 2 Timestamp"
"fields" (cslice (sdict "name" "• How long ago the snowflake was created" "value" $e "inline" true))
"color" 0xffff00)}}
{{else}}
{{$smaller := $first}}
{{$bigger := $second}}
{{if gt $first $second}}
{{$smaller = $second}}
{{$bigger = $first}}
{{end}}
{{$e := sdict "Input" ($args.Get 0) "epoch" .DiscordEpoch "ctime" $ctime}}
{{template "convert" $e}}
{{$f := sdict "Input" ($args.Get 1) "epoch" .DiscordEpoch "ctime" $ctime}}
{{template "convert" $f}}
{{$days := fdiv (($bigger|.DiscordEpoch.Add).Sub ($smaller|.DiscordEpoch.Add)).Hours 24}}
{{$y := fdiv $days 365.25|roundFloor|toFloat}}
{{$mo := (sub (fdiv $days 30.417) (mult $y 12))|roundFloor|toFloat}}
{{$d := toFloat (sub $days (add (mult $y 365.25) (mult $mo 30.417)))}}
{{sendMessage nil (cembed
"title" "Snowflake 2 Timestamp"
"fields" (cslice
(sdict "name" (print "**•** First Snowflake - `" ($args.Get 0) "`") "value" $e.e "inline" false)
(sdict "name" (print "**•** Second Snowflake - `" ($args.Get 1) "`") "value" $f.e "inline" false)
(sdict "name" "**•** Time between these two snowflakes" "value" (print "⌛\u200A" (toInt $y) "Y " (toInt $mo) "M " (toInt $d) "D\n" (humanizeDurationSeconds (($bigger | .DiscordEpoch.Add).Sub ($smaller | .DiscordEpoch.Add)))) "inline" false))
"color" 0xffff00)}}
{{end}}