-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinit.lua
70 lines (57 loc) · 2.09 KB
/
init.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
--[[
Apache License 2.0
Copyright (c) 2022-2024 Bilal2453
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local discordia = require("discordia")
local discordiaInteractions = require("discordia-interactions")
local rawComponents = require("resolver").rawComponents
local isInstance = discordia.class.isInstance
local resolver = discordiaInteractions.resolver
-- [[ Define the module's classes ]]
local module = {
Component = require('containers/abstract/Component'),
Components = require("containers/Components"),
Button = require("components/Button"),
SelectMenu = require("components/SelectMenu"),
}
-- [[ Patch the following Discordia classes ]]
require("client/Client")
require("containers/abstract/Component")
require("containers/abstract/TextChannel")
require("containers/Message")
-- [[ Patch Discordia's enums to add additional values ]]
do
local enums = require("enums")
local discordiaEnums = discordia.enums
local enum = discordiaEnums.enum
for k, v in pairs(enums) do
discordiaEnums[k] = enum(v)
end
end
-- [[ Patch the module into Discordia as an entry point ]]
for k, v in pairs(module) do
discordia[k] = v
end
-- [[ Wrap resolver.message to make it understand components field ]]
resolver.message_resolvers.components = function(content)
if isInstance(content, module.Components) or isInstance(content, module.Component) then
return {
components = content
}
end
end
resolver.message_wrappers.components = function(content)
if content.components then
content.components = rawComponents(content.components) or content.components
end
end
return module