You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
Lua
67 lines
1.6 KiB
Lua
--[=[
|
|
@c Channel x Snowflake
|
|
@t abc
|
|
@d Defines the base methods and properties for all Discord channel types.
|
|
]=]
|
|
|
|
local Snowflake = require('containers/abstract/Snowflake')
|
|
local enums = require('enums')
|
|
|
|
local format = string.format
|
|
local channelType = enums.channelType
|
|
|
|
local Channel, get = require('class')('Channel', Snowflake)
|
|
|
|
function Channel:__init(data, parent)
|
|
Snowflake.__init(self, data, parent)
|
|
end
|
|
|
|
function Channel:_modify(payload)
|
|
local data, err = self.client._api:modifyChannel(self._id, payload)
|
|
if data then
|
|
self:_load(data)
|
|
return true
|
|
else
|
|
return false, err
|
|
end
|
|
end
|
|
|
|
function Channel:_delete()
|
|
local data, err = self.client._api:deleteChannel(self._id)
|
|
if data then
|
|
local cache
|
|
local t = self._type
|
|
if t == channelType.text or t == channelType.news then
|
|
cache = self._parent._text_channels
|
|
elseif t == channelType.private then
|
|
cache = self._parent._private_channels
|
|
elseif t == channelType.group then
|
|
cache = self._parent._group_channels
|
|
elseif t == channelType.voice then
|
|
cache = self._parent._voice_channels
|
|
elseif t == channelType.category then
|
|
cache = self._parent._categories
|
|
end
|
|
if cache then
|
|
cache:_delete(self._id)
|
|
end
|
|
return true
|
|
else
|
|
return false, err
|
|
end
|
|
end
|
|
|
|
--[=[@p type number The channel type. See the `channelType` enumeration for a
|
|
human-readable representation.]=]
|
|
function get.type(self)
|
|
return self._type
|
|
end
|
|
|
|
--[=[@p mentionString string A string that, when included in a message content,
|
|
may resolve as a link to a channel in the official Discord client.]=]
|
|
function get.mentionString(self)
|
|
return format('<#%s>', self._id)
|
|
end
|
|
|
|
return Channel
|