-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathembed.lua
129 lines (102 loc) · 1.88 KB
/
embed.lua
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
local EmbedM = {}
EmbedM.__index = EmbedM
local stringsub = string.sub
function EmbedM:Title(t)
if #t > 256 then
t = stringsub(t, 1, 256)
end
self.embed.title = t
end
function EmbedM:Description(t)
if #t > 2048 then
t = stringsub(t, 1, 2048)
end
self.embed.description = t
end
function EmbedM:URLTitle(url)
self.embed.url = url
end
function EmbedM:Time(time)
self.embed.timestamp = time
end
function EmbedM:Color(color)
self.embed.color = color
end
function EmbedM:Footer(text)
local footer = self.embed.footer
if not footer then
footer = {}
self.embed.footer = footer
end
if #text > 2048 then
text = stringsub(text, 1, 2048)
end
footer.text = text
end
function EmbedM:FooterIcon(icon)
local footer = self.embed.footer
if not footer then
footer = {}
self.embed.footer = footer
end
footer.icon_url = icon
footer.proxy_icon_url = icon
end
function EmbedM:Image(url)
self.embed.image = {
url = url,
proxy_url = url,
}
end
function EmbedM:Thumbnail(url)
self.embed.thumbnail = {
url = url,
proxy_url = url,
}
end
function EmbedM:Video(url)
self.embed.video = {
url = url
}
end
function EmbedM:Author(user, url)
self.embed.author = {
name = user.tag,
url = url,
icon_url = user.avatarURL
}
end
function EmbedM:Header(text, url)
self.embed.author = {
name = text,
url = url
}
end
function EmbedM:Field(title, text, inline)
local fields = self.embed.fields
if not fields then
fields = {}
self.embed.fields = fields
end
if #title > 256 then
title = stringsub(title, 1, 256)
end
if #text > 1024 then
text = stringsub(text, 1, 1024)
end
fields[#fields + 1] = {
name = title,
value = text,
inline = inline or false
}
end
function EmbedM:Export()
return self.embed
end
local setmetatable = setmetatable
local function CreateEmbed()
return setmetatable({
embed = {}
}, EmbedM)
end
return {CreateEmbed = CreateEmbed}