UNPKG

hennus-api

Version:

Esta es una libreria para el bot Hennus

268 lines (267 loc) 12.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HennusWS = void 0; const ws_1 = require("@discordjs/ws"); const v10_1 = require("discord-api-types/v10"); const types_1 = require("../types"); const Presence_1 = require("../types/events/Presence"); const modal_1 = require("../types/interaction/modal"); const commnads_1 = require("../types/interaction/commnads"); const componets_1 = require("../types/interaction/componets"); const utils_1 = require("../utils"); class HennusWS extends ws_1.WebSocketManager { constructor(client, rest) { super({ token: client.token, intents: client.intents.bitfield, rest, buildStrategy: (manager) => new ws_1.WorkerShardingStrategy(manager, { shardsPerWorker: "all" }), shardCount: client.options.sharCount, shardIds: client.options.shardIds, }); Object.defineProperty(this, "client", { value: client, }); } ; async Handler(data) { if (data.t == v10_1.GatewayDispatchEvents.GuildCreate) await this.handleGuildCreate(data); else if (data.t == v10_1.GatewayDispatchEvents.GuildUpdate) { const cache = this.client.guilds.cache.get(data.d.id); if (cache) { this.client.guilds.cache.delete(cache.id); cache.data = data.d; if (data.d.approximate_member_count && cache.memberCount != data.d.approximate_member_count) cache.memberCount = data.d.approximate_member_count; if (data.d.description !== cache.description) cache.description = data.d.description ?? undefined; if (data.d.name != cache.name) cache.name = data.d.name; this.client.emit("GuildUpdate", cache); this.client.guilds.cache.set(data.d.id, cache); } ; } else if (data.t == v10_1.GatewayDispatchEvents.GuildDelete) { const cache = this.client.guilds.cache.get(data.d.id); if (cache) { this.client.emit("GuildDelete", cache); this.client.guilds.cache.delete(cache.id); } ; } else if (data.t == v10_1.GatewayDispatchEvents.ChannelCreate || data.t == v10_1.GatewayDispatchEvents.ChannelUpdate || data.t == v10_1.GatewayDispatchEvents.ChannelDelete) { let channel = (0, utils_1.channelConvertidor)(data.d, this.client); if (channel) { const cache = this.client.channels.cache.get(channel.id); if (data.t == v10_1.GatewayDispatchEvents.ChannelCreate) { !channel.isChannelCategory() ? channel.messages : undefined; this.client.channels.cache.set(channel.id, channel); this.client.emit('ChannelCreate', channel); } ; if (data.t == v10_1.GatewayDispatchEvents.ChannelDelete) { this.client.emit('ChannelDelete', channel); if (cache) this.client.channels.cache.delete(channel.id); } ; if (data.t == v10_1.GatewayDispatchEvents.ChannelUpdate) { if (!cache) { !channel.isChannelCategory() ? channel.messages : undefined; this.client.channels.cache.set(channel.id, channel); } else { cache.data = channel.data; cache._data = channel._data; cache.name = channel.name; this.client.channels.update(cache); } ; this.client.emit('ChannelUpdate', channel); } ; } ; } else if (data.t == v10_1.GatewayDispatchEvents.MessageCreate) { const message = new types_1.Message(data.d, this.client); this.client.emit("MessageCreate", message); const channel = message.channel; if (channel && !channel.isChannelCategory()) { channel.lastMessage = message.id; channel.messages.cache.set(message.id, message); this.client.channels.update(channel); } ; } else if (data.t == v10_1.GatewayDispatchEvents.MessageDelete) { const channel = this.client.channels.cache.get(data.d.channel_id); let msg; if (channel && !channel.isChannelCategory()) msg = channel.messages.cache.get(data.d.id); if (msg) { this.client.emit("MessageDelete", msg); if (channel && !channel.isChannelCategory()) channel.messages.cache.delete(data.d.id); } ; } else if (data.t == v10_1.GatewayDispatchEvents.MessageUpdate) { const New_msg = new types_1.Message(data.d, this.client); const channel = this.client.channels.cache.get(data.d.channel_id); let Old_msg; if (channel && !channel.isChannelCategory()) Old_msg = channel.messages.cache.get(data.d.id); this.client.emit("MessageUpdate", New_msg, Old_msg); if (channel && !channel.isChannelCategory()) { channel.messages.update(New_msg); } ; } else if (data.t == v10_1.GatewayDispatchEvents.PresenceUpdate) { const presence = new Presence_1.Presence(data.d, this.client); this.client.emit("PresenceUpdate", presence); if (!this.client.users.cache.has(presence.user.id)) this.client.users.cache.set(presence.user.id, presence.user); } else if (data.t == v10_1.GatewayDispatchEvents.UserUpdate) { const user = new types_1.User(data.d, this.client); this.client.users.update(user); this.client.emit("UserUpdate", user); } else if (data.t == v10_1.GatewayDispatchEvents.GuildMemberAdd) { const guild = this.client.guilds.resolve(data.d.guild_id); let member = undefined; if (guild) { if (data.d.user && !guild.members.resolve(data.d.user?.id ?? "")) { guild.memberCount = guild.memberCount + 1; member = new types_1.GuildMember(data.d, guild, this.client); guild.members.cache.set(data.d.user.id, member); this.client.guilds.add(guild); } else member = new types_1.GuildMember(data.d, guild, this.client); } ; if (member) { this.client.emit("GuildMemberAdd", member); } ; } else if (data.t == v10_1.GatewayDispatchEvents.GuildMemberRemove) { const id = data.d.user.id; const guildId = data.d.guild_id; const guild = this.client.guilds.resolve(guildId); if (guild) { const member = guild.members.resolve(id); if (member) { this.client.emit("GuildMemberRemove", member); guild.memberCount = guild.memberCount - 1; guild.members.cache.delete(id); this.client.guilds.add(guild); } ; } ; } else if (data.t == v10_1.GatewayDispatchEvents.GuildMemberUpdate) { const id = data.d.user.id; const guildId = data.d.guild_id; const guild = this.client.guilds.resolve(guildId); if (guild) { const oldMember = guild.members.resolve(id); const newMember = new types_1.GuildMember(data.d, guild, this.client); this.client.emit("GuildMemberUpdate", newMember, oldMember); guild.members.add(newMember); this.client.guilds.add(guild); } ; } else if (data.t == v10_1.GatewayDispatchEvents.GuildMembersChunk) { const guildId = data.d.guild_id; const guild = this.client.guilds.resolve(guildId); if (guild) { const count = data.d.chunk_count; guild.memberCount = guild.memberCount + count; const members = data.d.members.map((member => new types_1.GuildMember(member, guild, this.client))); this.client.emit("GuildMembersChunk", members); members.forEach((member) => { guild.members.add(member); }); } ; if (this.client.intents.has(v10_1.GatewayIntentBits.GuildMembers) && data.d.presences) data.d.presences.forEach((presence) => { const user = new types_1.User(presence.user, this.client); this.client.users.update(user); }); } else if (data.t == v10_1.GatewayDispatchEvents.InteractionCreate) { let int = undefined; if (data.d.type == v10_1.InteractionType.ModalSubmit) int = new modal_1.InteractionModal(data.d, this.client); if (data.d.type == v10_1.InteractionType.ApplicationCommand || data.d.type == v10_1.InteractionType.ApplicationCommandAutocomplete) int = new commnads_1.InteractionCommands(data.d, this.client); if (data.d.type == v10_1.InteractionType.MessageComponent) { if (data.d.data.component_type == v10_1.ComponentType.Button) int = new componets_1.InteractionButton(data.d, this.client); else int = new componets_1.InteractionSelectAny(data.d, this.client); } ; if (int) this.client.emit("InteractionCreate", int); } else if (data.t == v10_1.GatewayDispatchEvents.VoiceStateUpdate) this.client.emit("VoiceStateUpdate", data.d); } ; async ready(data) { const ready = new types_1.Ready(data, this.client); this.client.emit("Ready", ready); if (!this.client.intents.has(v10_1.GatewayIntentBits.Guilds)) { for (let index = 0; index < data.guilds.length; index++) { if (index > 5) continue; const element = data.guilds[index]; const channels = await this.client.rest.get("guildChannels", element.id); let guild; if (element.unavailable) guild = await this.client.rest.get("guild", element.id); if (channels) { this.client.channels.setall(channels); } if (guild) { guild.members.fetchall(); guild.roles.fetchall(guild.id); this.client.guilds.cache.set(guild.id, guild); } } } } async handleGuildCreate(data) { const guild = new types_1.Guild(data.d, this.client); guild.memberCount = data.d.member_count; guild.roles.setall(data.d.roles); const channels = [...data.d.channels, ...data.d.threads] .map((channel) => (0, utils_1.channelConvertidor)(channel, this.client)) .filter((x) => x !== undefined); this.client.channels.setall(channels); guild.members.setall(data.d.members, guild); this.client.emojis.setall(data.d.emojis.map((x) => new types_1.GuildEmojis(x, guild, this.client))); const cache = this.client.guilds.cache.get(guild.id); if (!cache) this.client.guilds.cache.set(guild.id, guild); this.client.emit("GuildCreate", guild); } ; async sendall(packet) { for (const shardId of await this.getShardIds()) this.send(shardId, packet); } ; } exports.HennusWS = HennusWS; ;