diff options
Diffstat (limited to 'node_modules/discord.js/src/client/actions/ChannelUpdate.js')
-rw-r--r-- | node_modules/discord.js/src/client/actions/ChannelUpdate.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/client/actions/ChannelUpdate.js b/node_modules/discord.js/src/client/actions/ChannelUpdate.js new file mode 100644 index 0000000..7ca331a --- /dev/null +++ b/node_modules/discord.js/src/client/actions/ChannelUpdate.js @@ -0,0 +1,42 @@ +'use strict'; + +const Action = require('./Action'); +const { createChannel } = require('../../util/Channels'); + +class ChannelUpdateAction extends Action { + handle(data) { + const client = this.client; + let channel = client.channels.cache.get(data.id); + + if (channel) { + const old = channel._update(data); + + if (channel.type !== data.type) { + const newChannel = createChannel(this.client, data, channel.guild); + + if (!newChannel) { + this.client.channels.cache.delete(channel.id); + return {}; + } + + if (channel.isTextBased() && newChannel.isTextBased()) { + for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message); + } + + channel = newChannel; + this.client.channels.cache.set(channel.id, channel); + } + + return { + old, + updated: channel, + }; + } else { + client.channels._add(data); + } + + return {}; + } +} + +module.exports = ChannelUpdateAction; |