mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 03:18:17 +00:00
ref
This commit is contained in:
+47
-38
@@ -1,8 +1,8 @@
|
|||||||
// deno-lint-ignore-file require-await no-explicit-any prefer-const
|
// deno-lint-ignore-file require-await no-explicit-any prefer-const
|
||||||
import { ChannelStruct } from "./structures/channel.ts";
|
import { DiscordenoChannel } from "./structures/channel.ts";
|
||||||
import { GuildStruct } from "./structures/guild.ts";
|
import { DiscordenoGuild } from "./structures/guild.ts";
|
||||||
import { MemberStruct } from "./structures/member.ts";
|
import { DiscordenoMember } from "./structures/member.ts";
|
||||||
import { MessageStruct } from "./structures/message.ts";
|
import { DiscordenoMessage } from "./structures/message.ts";
|
||||||
import { Emoji } from "./types/emojis/emoji.ts";
|
import { Emoji } from "./types/emojis/emoji.ts";
|
||||||
import { PresenceUpdate } from "./types/misc/presence_update.ts";
|
import { PresenceUpdate } from "./types/misc/presence_update.ts";
|
||||||
import { Collection } from "./util/collection.ts";
|
import { Collection } from "./util/collection.ts";
|
||||||
@@ -10,13 +10,13 @@ import { Collection } from "./util/collection.ts";
|
|||||||
export const cache = {
|
export const cache = {
|
||||||
isReady: false,
|
isReady: false,
|
||||||
/** All of the guild objects the bot has access to, mapped by their Ids */
|
/** All of the guild objects the bot has access to, mapped by their Ids */
|
||||||
guilds: new Collection<string, GuildStruct>(),
|
guilds: new Collection<string, DiscordenoGuild>(),
|
||||||
/** All of the channel objects the bot has access to, mapped by their Ids */
|
/** All of the channel objects the bot has access to, mapped by their Ids */
|
||||||
channels: new Collection<string, ChannelStruct>(),
|
channels: new Collection<string, DiscordenoChannel>(),
|
||||||
/** All of the message objects the bot has cached since the bot acquired `READY` state, mapped by their Ids */
|
/** All of the message objects the bot has cached since the bot acquired `READY` state, mapped by their Ids */
|
||||||
messages: new Collection<string, MessageStruct>(),
|
messages: new Collection<string, DiscordenoMessage>(),
|
||||||
/** All of the member objects that have been cached since the bot acquired `READY` state, mapped by their Ids */
|
/** All of the member objects that have been cached since the bot acquired `READY` state, mapped by their Ids */
|
||||||
members: new Collection<string, MemberStruct>(),
|
members: new Collection<string, DiscordenoMember>(),
|
||||||
/** All of the unavailable guilds, mapped by their Ids (id, timestamp) */
|
/** All of the unavailable guilds, mapped by their Ids (id, timestamp) */
|
||||||
unavailableGuilds: new Collection<string, number>(),
|
unavailableGuilds: new Collection<string, number>(),
|
||||||
/** All of the presence update objects received in PRESENCE_UPDATE gateway event, mapped by their user Id */
|
/** All of the presence update objects received in PRESENCE_UPDATE gateway event, mapped by their user Id */
|
||||||
@@ -25,8 +25,8 @@ export const cache = {
|
|||||||
string,
|
string,
|
||||||
(
|
(
|
||||||
value:
|
value:
|
||||||
| Collection<string, MemberStruct>
|
| Collection<string, DiscordenoMember>
|
||||||
| PromiseLike<Collection<string, MemberStruct>>,
|
| PromiseLike<Collection<string, DiscordenoMember>>,
|
||||||
) => void
|
) => void
|
||||||
>(),
|
>(),
|
||||||
executedSlashCommands: new Collection<string, string>(),
|
executedSlashCommands: new Collection<string, string>(),
|
||||||
@@ -81,23 +81,23 @@ export type TableName =
|
|||||||
function set(
|
function set(
|
||||||
table: "guilds",
|
table: "guilds",
|
||||||
key: string,
|
key: string,
|
||||||
value: GuildStruct,
|
value: DiscordenoGuild,
|
||||||
): Promise<Collection<string, GuildStruct>>;
|
): Promise<Collection<string, DiscordenoGuild>>;
|
||||||
function set(
|
function set(
|
||||||
table: "channels",
|
table: "channels",
|
||||||
key: string,
|
key: string,
|
||||||
value: ChannelStruct,
|
value: DiscordenoChannel,
|
||||||
): Promise<Collection<string, ChannelStruct>>;
|
): Promise<Collection<string, DiscordenoChannel>>;
|
||||||
function set(
|
function set(
|
||||||
table: "messages",
|
table: "messages",
|
||||||
key: string,
|
key: string,
|
||||||
value: MessageStruct,
|
value: DiscordenoMessage,
|
||||||
): Promise<Collection<string, MessageStruct>>;
|
): Promise<Collection<string, DiscordenoMessage>>;
|
||||||
function set(
|
function set(
|
||||||
table: "members",
|
table: "members",
|
||||||
key: string,
|
key: string,
|
||||||
value: MemberStruct,
|
value: DiscordenoMember,
|
||||||
): Promise<Collection<string, MemberStruct>>;
|
): Promise<Collection<string, DiscordenoMember>>;
|
||||||
function set(
|
function set(
|
||||||
table: "presences",
|
table: "presences",
|
||||||
key: string,
|
key: string,
|
||||||
@@ -112,13 +112,22 @@ async function set(table: TableName, key: string, value: any) {
|
|||||||
return cache[table].set(key, value);
|
return cache[table].set(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get(table: "guilds", key: string): Promise<GuildStruct | undefined>;
|
function get(
|
||||||
|
table: "guilds",
|
||||||
|
key: string,
|
||||||
|
): Promise<DiscordenoGuild | undefined>;
|
||||||
function get(
|
function get(
|
||||||
table: "channels",
|
table: "channels",
|
||||||
key: string,
|
key: string,
|
||||||
): Promise<ChannelStruct | undefined>;
|
): Promise<DiscordenoChannel | undefined>;
|
||||||
function get(table: "messages", key: string): Promise<MemberStruct | undefined>;
|
function get(
|
||||||
function get(table: "members", key: string): Promise<MemberStruct | undefined>;
|
table: "messages",
|
||||||
|
key: string,
|
||||||
|
): Promise<DiscordenoMember | undefined>;
|
||||||
|
function get(
|
||||||
|
table: "members",
|
||||||
|
key: string,
|
||||||
|
): Promise<DiscordenoMember | undefined>;
|
||||||
function get(
|
function get(
|
||||||
table: "presences",
|
table: "presences",
|
||||||
key: string,
|
key: string,
|
||||||
@@ -134,9 +143,9 @@ async function get(table: TableName, key: string) {
|
|||||||
function forEach(
|
function forEach(
|
||||||
table: "guilds",
|
table: "guilds",
|
||||||
callback: (
|
callback: (
|
||||||
value: GuildStruct,
|
value: DiscordenoGuild,
|
||||||
key: string,
|
key: string,
|
||||||
map: Map<string, GuildStruct>,
|
map: Map<string, DiscordenoGuild>,
|
||||||
) => unknown,
|
) => unknown,
|
||||||
): void;
|
): void;
|
||||||
function forEach(
|
function forEach(
|
||||||
@@ -146,25 +155,25 @@ function forEach(
|
|||||||
function forEach(
|
function forEach(
|
||||||
table: "channels",
|
table: "channels",
|
||||||
callback: (
|
callback: (
|
||||||
value: ChannelStruct,
|
value: DiscordenoChannel,
|
||||||
key: string,
|
key: string,
|
||||||
map: Map<string, ChannelStruct>,
|
map: Map<string, DiscordenoChannel>,
|
||||||
) => unknown,
|
) => unknown,
|
||||||
): void;
|
): void;
|
||||||
function forEach(
|
function forEach(
|
||||||
table: "messages",
|
table: "messages",
|
||||||
callback: (
|
callback: (
|
||||||
value: MessageStruct,
|
value: DiscordenoMessage,
|
||||||
key: string,
|
key: string,
|
||||||
map: Map<string, MessageStruct>,
|
map: Map<string, DiscordenoMessage>,
|
||||||
) => unknown,
|
) => unknown,
|
||||||
): void;
|
): void;
|
||||||
function forEach(
|
function forEach(
|
||||||
table: "members",
|
table: "members",
|
||||||
callback: (
|
callback: (
|
||||||
value: MemberStruct,
|
value: DiscordenoMember,
|
||||||
key: string,
|
key: string,
|
||||||
map: Map<string, MemberStruct>,
|
map: Map<string, DiscordenoMember>,
|
||||||
) => unknown,
|
) => unknown,
|
||||||
): void;
|
): void;
|
||||||
function forEach(
|
function forEach(
|
||||||
@@ -176,24 +185,24 @@ function forEach(
|
|||||||
|
|
||||||
function filter(
|
function filter(
|
||||||
table: "guilds",
|
table: "guilds",
|
||||||
callback: (value: GuildStruct, key: string) => boolean,
|
callback: (value: DiscordenoGuild, key: string) => boolean,
|
||||||
): Promise<Collection<string, GuildStruct>>;
|
): Promise<Collection<string, DiscordenoGuild>>;
|
||||||
function filter(
|
function filter(
|
||||||
table: "unavailableGuilds",
|
table: "unavailableGuilds",
|
||||||
callback: (value: number, key: string) => boolean,
|
callback: (value: number, key: string) => boolean,
|
||||||
): Promise<Collection<string, number>>;
|
): Promise<Collection<string, number>>;
|
||||||
function filter(
|
function filter(
|
||||||
table: "channels",
|
table: "channels",
|
||||||
callback: (value: ChannelStruct, key: string) => boolean,
|
callback: (value: DiscordenoChannel, key: string) => boolean,
|
||||||
): Promise<Collection<string, ChannelStruct>>;
|
): Promise<Collection<string, DiscordenoChannel>>;
|
||||||
function filter(
|
function filter(
|
||||||
table: "messages",
|
table: "messages",
|
||||||
callback: (value: MessageStruct, key: string) => boolean,
|
callback: (value: DiscordenoMessage, key: string) => boolean,
|
||||||
): Promise<Collection<string, MessageStruct>>;
|
): Promise<Collection<string, DiscordenoMessage>>;
|
||||||
function filter(
|
function filter(
|
||||||
table: "members",
|
table: "members",
|
||||||
callback: (value: MemberStruct, key: string) => boolean,
|
callback: (value: DiscordenoMember, key: string) => boolean,
|
||||||
): Promise<Collection<string, MemberStruct>>;
|
): Promise<Collection<string, DiscordenoMember>>;
|
||||||
async function filter(
|
async function filter(
|
||||||
table: TableName,
|
table: TableName,
|
||||||
callback: (value: any, key: string) => boolean,
|
callback: (value: any, key: string) => boolean,
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
|||||||
export async function handleChannelCreate(data: DiscordGatewayPayload) {
|
export async function handleChannelCreate(data: DiscordGatewayPayload) {
|
||||||
const payload = data.d as DiscordChannel;
|
const payload = data.d as DiscordChannel;
|
||||||
|
|
||||||
const channelStruct = await structures.createChannelStruct(payload);
|
const discordenoChannel = await structures.createDiscordenoChannel(payload);
|
||||||
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
await cacheHandlers.set("channels", discordenoChannel.id, discordenoChannel);
|
||||||
|
|
||||||
eventHandlers.channelCreate?.(channelStruct);
|
eventHandlers.channelCreate?.(discordenoChannel);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ export async function handleChannelUpdate(data: DiscordGatewayPayload) {
|
|||||||
const payload = data.d as DiscordChannel;
|
const payload = data.d as DiscordChannel;
|
||||||
const cachedChannel = await cacheHandlers.get("channels", payload.id);
|
const cachedChannel = await cacheHandlers.get("channels", payload.id);
|
||||||
|
|
||||||
const channelStruct = await structures.createChannelStruct(payload);
|
const discordenoChannel = await structures.createDiscordenoChannel(payload);
|
||||||
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
await cacheHandlers.set("channels", discordenoChannel.id, discordenoChannel);
|
||||||
|
|
||||||
if (!cachedChannel) return;
|
if (!cachedChannel) return;
|
||||||
|
|
||||||
eventHandlers.channelUpdate?.(channelStruct, cachedChannel);
|
eventHandlers.channelUpdate?.(discordenoChannel, cachedChannel);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ export async function handleGuildCreate(
|
|||||||
// When shards resume they emit GUILD_CREATE again.
|
// When shards resume they emit GUILD_CREATE again.
|
||||||
if (await cacheHandlers.has("guilds", payload.id)) return;
|
if (await cacheHandlers.has("guilds", payload.id)) return;
|
||||||
|
|
||||||
const guildStruct = await structures.createGuildStruct(
|
const discordenoGuild = await structures.createDiscordenoGuild(
|
||||||
payload,
|
payload,
|
||||||
shardId,
|
shardId,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("guilds", guildStruct.id, guildStruct);
|
await cacheHandlers.set("guilds", discordenoGuild.id, discordenoGuild);
|
||||||
|
|
||||||
const shard = ws.shards.get(shardId);
|
const shard = ws.shards.get(shardId);
|
||||||
|
|
||||||
@@ -26,9 +26,9 @@ export async function handleGuildCreate(
|
|||||||
|
|
||||||
shard.unavailableGuildIds.delete(payload.id);
|
shard.unavailableGuildIds.delete(payload.id);
|
||||||
|
|
||||||
return eventHandlers.guildAvailable?.(guildStruct);
|
return eventHandlers.guildAvailable?.(discordenoGuild);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cache.isReady) return eventHandlers.guildLoaded?.(guildStruct);
|
if (!cache.isReady) return eventHandlers.guildLoaded?.(discordenoGuild);
|
||||||
eventHandlers.guildCreate?.(guildStruct);
|
eventHandlers.guildCreate?.(discordenoGuild);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
|||||||
|
|
||||||
export async function handleInteractionCreate(data: DiscordGatewayPayload) {
|
export async function handleInteractionCreate(data: DiscordGatewayPayload) {
|
||||||
const payload = data.d as InteractionCommandPayload;
|
const payload = data.d as InteractionCommandPayload;
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
payload.member,
|
payload.member,
|
||||||
payload.guild_id,
|
payload.guild_id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
|
||||||
eventHandlers.interactionCreate?.(
|
eventHandlers.interactionCreate?.(
|
||||||
{
|
{
|
||||||
...payload,
|
...payload,
|
||||||
member: memberStruct,
|
member: discordenoMember,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,13 @@ export async function handleGuildMembersChunk(data: DiscordGatewayPayload) {
|
|||||||
|
|
||||||
const members = await Promise.all(
|
const members = await Promise.all(
|
||||||
payload.members.map(async (member) => {
|
payload.members.map(async (member) => {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
member,
|
member,
|
||||||
payload.guild_id,
|
payload.guild_id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
|
||||||
return memberStruct;
|
return discordenoMember;
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ export async function handleGuildMemberAdd(data: DiscordGatewayPayload) {
|
|||||||
if (!guild) return;
|
if (!guild) return;
|
||||||
|
|
||||||
guild.memberCount++;
|
guild.memberCount++;
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
payload,
|
payload,
|
||||||
payload.guild_id,
|
payload.guild_id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
|
||||||
eventHandlers.guildMemberAdd?.(guild, memberStruct);
|
eventHandlers.guildMemberAdd?.(guild, discordenoMember);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,24 +23,24 @@ export async function handleGuildMemberUpdate(data: DiscordGatewayPayload) {
|
|||||||
mute: guildMember?.mute || false,
|
mute: guildMember?.mute || false,
|
||||||
roles: payload.roles,
|
roles: payload.roles,
|
||||||
};
|
};
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
newMemberData,
|
newMemberData,
|
||||||
payload.guild_id,
|
payload.guild_id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
|
||||||
if (guildMember) {
|
if (guildMember) {
|
||||||
if (guildMember.nick !== payload.nick) {
|
if (guildMember.nick !== payload.nick) {
|
||||||
eventHandlers.nicknameUpdate?.(
|
eventHandlers.nicknameUpdate?.(
|
||||||
guild,
|
guild,
|
||||||
memberStruct,
|
discordenoMember,
|
||||||
payload.nick!,
|
payload.nick!,
|
||||||
guildMember.nick,
|
guildMember.nick,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (payload.pending === false && guildMember.pending === true) {
|
if (payload.pending === false && guildMember.pending === true) {
|
||||||
eventHandlers.membershipScreeningPassed?.(guild, memberStruct);
|
eventHandlers.membershipScreeningPassed?.(guild, discordenoMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleIds = guildMember.roles || [];
|
const roleIds = guildMember.roles || [];
|
||||||
@@ -51,7 +51,7 @@ export async function handleGuildMemberUpdate(data: DiscordGatewayPayload) {
|
|||||||
`1. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
`1. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
||||||
);
|
);
|
||||||
if (!payload.roles.includes(id)) {
|
if (!payload.roles.includes(id)) {
|
||||||
eventHandlers.roleLost?.(guild, memberStruct, id);
|
eventHandlers.roleLost?.(guild, discordenoMember, id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -61,10 +61,10 @@ export async function handleGuildMemberUpdate(data: DiscordGatewayPayload) {
|
|||||||
`2. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
`2. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
||||||
);
|
);
|
||||||
if (!roleIds.includes(id)) {
|
if (!roleIds.includes(id)) {
|
||||||
eventHandlers.roleGained?.(guild, memberStruct, id);
|
eventHandlers.roleGained?.(guild, discordenoMember, id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
eventHandlers.guildMemberUpdate?.(guild, memberStruct, cachedMember);
|
eventHandlers.guildMemberUpdate?.(guild, discordenoMember, cachedMember);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,26 +15,30 @@ export async function handleMessageCreate(data: DiscordGatewayPayload) {
|
|||||||
|
|
||||||
if (payload.member && guild) {
|
if (payload.member && guild) {
|
||||||
// If in a guild cache the author as a member
|
// If in a guild cache the author as a member
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
{ ...payload.member, user: payload.author },
|
{ ...payload.member, user: payload.author },
|
||||||
guild.id,
|
guild.id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(payload.mentions.map(async (mention) => {
|
await Promise.all(payload.mentions.map(async (mention) => {
|
||||||
// Cache the member if its a valid member
|
// Cache the member if its a valid member
|
||||||
if (mention.member && guild) {
|
if (mention.member && guild) {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
{ ...mention.member, user: mention },
|
{ ...mention.member, user: mention },
|
||||||
guild.id,
|
guild.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
return cacheHandlers.set("members", memberStruct.id, memberStruct);
|
return cacheHandlers.set(
|
||||||
|
"members",
|
||||||
|
discordenoMember.id,
|
||||||
|
discordenoMember,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const message = await structures.createMessageStruct(payload);
|
const message = await structures.createDiscordenoMessage(payload);
|
||||||
// Cache the message
|
// Cache the message
|
||||||
await cacheHandlers.set("messages", payload.id, message);
|
await cacheHandlers.set("messages", payload.id, message);
|
||||||
|
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ export async function handleMessageReactionAdd(data: DiscordGatewayPayload) {
|
|||||||
if (payload.member && payload.guild_id) {
|
if (payload.member && payload.guild_id) {
|
||||||
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
||||||
if (guild) {
|
if (guild) {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
payload.member,
|
payload.member,
|
||||||
guild.id,
|
guild.id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ export async function handleMessageReactionRemove(
|
|||||||
if (payload.member && payload.guild_id) {
|
if (payload.member && payload.guild_id) {
|
||||||
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
||||||
if (guild) {
|
if (guild) {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
payload.member,
|
payload.member,
|
||||||
guild.id,
|
guild.id,
|
||||||
);
|
);
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export async function handleMessageUpdate(data: DiscordGatewayPayload) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const message = await structures.createMessageStruct(payload);
|
const message = await structures.createDiscordenoMessage(payload);
|
||||||
|
|
||||||
await cacheHandlers.set("messages", payload.id, message);
|
await cacheHandlers.set("messages", payload.id, message);
|
||||||
|
|
||||||
|
|||||||
@@ -102,15 +102,15 @@ async function loaded(shardId: number) {
|
|||||||
);
|
);
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
members.map(async (member) => {
|
members.map(async (member) => {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
snakeKeysToCamelCase(member),
|
snakeKeysToCamelCase(member),
|
||||||
guildId,
|
guildId,
|
||||||
);
|
);
|
||||||
|
|
||||||
return cacheHandlers.set(
|
return cacheHandlers.set(
|
||||||
"members",
|
"members",
|
||||||
memberStruct.id,
|
discordenoMember.id,
|
||||||
memberStruct,
|
discordenoMember,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export async function handleGuildRoleCreate(data: DiscordGatewayPayload) {
|
|||||||
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
const guild = await cacheHandlers.get("guilds", payload.guild_id);
|
||||||
if (!guild) return;
|
if (!guild) return;
|
||||||
|
|
||||||
const role = await structures.createRoleStruct(payload.role);
|
const role = await structures.createDiscordenoRole(payload.role);
|
||||||
guild.roles = guild.roles.set(payload.role.id, role);
|
guild.roles = guild.roles.set(payload.role.id, role);
|
||||||
await cacheHandlers.set("guilds", payload.guild_id, guild);
|
await cacheHandlers.set("guilds", payload.guild_id, guild);
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export async function handleGuildRoleUpdate(data: DiscordGatewayPayload) {
|
|||||||
const cachedRole = guild.roles.get(payload.role.id);
|
const cachedRole = guild.roles.get(payload.role.id);
|
||||||
if (!cachedRole) return;
|
if (!cachedRole) return;
|
||||||
|
|
||||||
const role = await structures.createRoleStruct(payload.role);
|
const role = await structures.createDiscordenoRole(payload.role);
|
||||||
guild.roles.set(payload.role.id, role);
|
guild.roles.set(payload.role.id, role);
|
||||||
await cacheHandlers.set("guilds", guild.id, guild);
|
await cacheHandlers.set("guilds", guild.id, guild);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export async function handleVoiceStateUpdate(data: DiscordGatewayPayload) {
|
|||||||
if (!guild) return;
|
if (!guild) return;
|
||||||
|
|
||||||
const member = payload.member
|
const member = payload.member
|
||||||
? await structures.createMemberStruct(payload.member, guild.id)
|
? await structures.createDiscordenoMember(payload.member, guild.id)
|
||||||
: await cacheHandlers.get("members", payload.user_id);
|
: await cacheHandlers.get("members", payload.user_id);
|
||||||
if (!member) return;
|
if (!member) return;
|
||||||
|
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ export async function createChannel(
|
|||||||
},
|
},
|
||||||
)) as DiscordChannel;
|
)) as DiscordChannel;
|
||||||
|
|
||||||
const channelStruct = await structures.createChannelStruct(result);
|
const discordenoChannel = await structures.createDiscordenoChannel(result);
|
||||||
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
await cacheHandlers.set("channels", discordenoChannel.id, discordenoChannel);
|
||||||
|
|
||||||
return channelStruct;
|
return discordenoChannel;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,13 +14,17 @@ export async function getChannel(channelId: string, addToCache = true) {
|
|||||||
endpoints.CHANNEL_BASE(channelId),
|
endpoints.CHANNEL_BASE(channelId),
|
||||||
)) as DiscordChannel;
|
)) as DiscordChannel;
|
||||||
|
|
||||||
const channelStruct = await structures.createChannelStruct(
|
const discordenoChannel = await structures.createDiscordenoChannel(
|
||||||
result,
|
result,
|
||||||
result.guild_id,
|
result.guild_id,
|
||||||
);
|
);
|
||||||
if (addToCache) {
|
if (addToCache) {
|
||||||
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
await cacheHandlers.set(
|
||||||
|
"channels",
|
||||||
|
discordenoChannel.id,
|
||||||
|
discordenoChannel,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return channelStruct;
|
return discordenoChannel;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,11 +15,18 @@ export async function getChannels(guildId: string, addToCache = true) {
|
|||||||
) as DiscordChannel[]);
|
) as DiscordChannel[]);
|
||||||
|
|
||||||
return Promise.all(result.map(async (res) => {
|
return Promise.all(result.map(async (res) => {
|
||||||
const channelStruct = await structures.createChannelStruct(res, guildId);
|
const discordenoChannel = await structures.createDiscordenoChannel(
|
||||||
|
res,
|
||||||
|
guildId,
|
||||||
|
);
|
||||||
if (addToCache) {
|
if (addToCache) {
|
||||||
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
await cacheHandlers.set(
|
||||||
|
"channels",
|
||||||
|
discordenoChannel.id,
|
||||||
|
discordenoChannel,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return channelStruct;
|
return discordenoChannel;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ export async function getPins(channelId: string) {
|
|||||||
)) as DiscordMessage[];
|
)) as DiscordMessage[];
|
||||||
|
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
result.map((res) => structures.createMessageStruct(res)),
|
result.map((res) => structures.createDiscordenoMessage(res)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ export async function editSlashResponse(
|
|||||||
// If the original message was edited, this will not return a message
|
// If the original message was edited, this will not return a message
|
||||||
if (!options.messageId) return result;
|
if (!options.messageId) return result;
|
||||||
|
|
||||||
const message = await structures.createMessageStruct(
|
const message = await structures.createDiscordenoMessage(
|
||||||
result as DiscordMessage,
|
result as DiscordMessage,
|
||||||
);
|
);
|
||||||
return message;
|
return message;
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ export async function createGuild(options: CreateGuild) {
|
|||||||
options,
|
options,
|
||||||
)) as DiscordGuild;
|
)) as DiscordGuild;
|
||||||
|
|
||||||
return structures.createGuildStruct(guild, 0);
|
return structures.createDiscordenoGuild(guild, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,5 +28,5 @@ export async function editGuild(guildId: string, options: ModifyGuild) {
|
|||||||
options,
|
options,
|
||||||
) as DiscordGuild;
|
) as DiscordGuild;
|
||||||
|
|
||||||
return structures.createGuildStruct(result, -1);
|
return structures.createDiscordenoGuild(result, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export async function editMember(
|
|||||||
endpoints.GUILD_MEMBER(guildId, memberId),
|
endpoints.GUILD_MEMBER(guildId, memberId),
|
||||||
options,
|
options,
|
||||||
) as MemberCreatePayload;
|
) as MemberCreatePayload;
|
||||||
const member = await structures.createMemberStruct(result, guildId);
|
const member = await structures.createDiscordenoMember(result, guildId);
|
||||||
|
|
||||||
return member;
|
return member;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,11 @@ export async function getMember(
|
|||||||
endpoints.GUILD_MEMBER(guildId, id),
|
endpoints.GUILD_MEMBER(guildId, id),
|
||||||
)) as MemberCreatePayload;
|
)) as MemberCreatePayload;
|
||||||
|
|
||||||
const memberStruct = await structures.createMemberStruct(data, guildId);
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
data,
|
||||||
|
guildId,
|
||||||
|
);
|
||||||
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
|
||||||
return memberStruct;
|
return discordenoMember;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,22 +51,26 @@ export async function getMembers(guildId: string, options?: GetMemberOptions) {
|
|||||||
}${options?.after ? `&after=${options.after}` : ""}`,
|
}${options?.after ? `&after=${options.after}` : ""}`,
|
||||||
)) as DiscordGuildMember[];
|
)) as DiscordGuildMember[];
|
||||||
|
|
||||||
const memberStructures = await Promise.all(
|
const discordenoMembers = await Promise.all(
|
||||||
result.map(async (member) => {
|
result.map(async (member) => {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
member,
|
member,
|
||||||
guildId,
|
guildId,
|
||||||
);
|
);
|
||||||
|
|
||||||
await cacheHandlers.set("members", memberStruct.id, memberStruct);
|
await cacheHandlers.set(
|
||||||
|
"members",
|
||||||
|
discordenoMember.id,
|
||||||
|
discordenoMember,
|
||||||
|
);
|
||||||
|
|
||||||
return memberStruct;
|
return discordenoMember;
|
||||||
}),
|
}),
|
||||||
) as Member[];
|
) as Member[];
|
||||||
|
|
||||||
if (!memberStructures.length) break;
|
if (!discordenoMembers.length) break;
|
||||||
|
|
||||||
memberStructures.forEach((member) => {
|
discordenoMembers.forEach((member) => {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running forEach loop in get_members file.`,
|
`Running forEach loop in get_members file.`,
|
||||||
@@ -76,7 +80,7 @@ export async function getMembers(guildId: string, options?: GetMemberOptions) {
|
|||||||
|
|
||||||
options = {
|
options = {
|
||||||
limit: options?.limit,
|
limit: options?.limit,
|
||||||
after: memberStructures[memberStructures.length - 1].id,
|
after: discordenoMembers[discordenoMembers.length - 1].id,
|
||||||
};
|
};
|
||||||
|
|
||||||
membersLeft -= 1000;
|
membersLeft -= 1000;
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ export async function sendDirectMessage(
|
|||||||
const dmChannelData = await rest.runMethod("post", endpoints.USER_DM, {
|
const dmChannelData = await rest.runMethod("post", endpoints.USER_DM, {
|
||||||
recipient_id: memberId,
|
recipient_id: memberId,
|
||||||
}) as DMChannelCreatePayload;
|
}) as DMChannelCreatePayload;
|
||||||
const channelStruct = await structures.createChannelStruct(
|
const discordenoChannel = await structures.createDiscordenoChannel(
|
||||||
dmChannelData as unknown as ChannelCreatePayload,
|
dmChannelData as unknown as ChannelCreatePayload,
|
||||||
);
|
);
|
||||||
// Recreate the channel and add it undert he users id
|
// Recreate the channel and add it undert he users id
|
||||||
await cacheHandlers.set("channels", memberId, channelStruct);
|
await cacheHandlers.set("channels", memberId, discordenoChannel);
|
||||||
dmChannel = channelStruct;
|
dmChannel = discordenoChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If it does exist try sending a message to this user
|
// If it does exist try sending a message to this user
|
||||||
|
|||||||
@@ -33,5 +33,5 @@ export async function editMessage(
|
|||||||
content,
|
content,
|
||||||
);
|
);
|
||||||
|
|
||||||
return structures.createMessageStruct(result as MessageCreateOptions);
|
return structures.createDiscordenoMessage(result as MessageCreateOptions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ export async function getMessage(channelId: string, id: string) {
|
|||||||
endpoints.CHANNEL_MESSAGE(channelId, id),
|
endpoints.CHANNEL_MESSAGE(channelId, id),
|
||||||
)) as MessageCreateOptions;
|
)) as MessageCreateOptions;
|
||||||
|
|
||||||
return structures.createMessageStruct(result);
|
return structures.createDiscordenoMessage(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ export async function getMessages(
|
|||||||
)) as MessageCreateOptions[];
|
)) as MessageCreateOptions[];
|
||||||
|
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
result.map((res) => structures.createMessageStruct(res)),
|
result.map((res) => structures.createDiscordenoMessage(res)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ export async function publishMessage(channelId: string, messageId: string) {
|
|||||||
endpoints.CHANNEL_MESSAGE_CROSSPOST(channelId, messageId),
|
endpoints.CHANNEL_MESSAGE_CROSSPOST(channelId, messageId),
|
||||||
)) as MessageCreateOptions;
|
)) as MessageCreateOptions;
|
||||||
|
|
||||||
return structures.createMessageStruct(data);
|
return structures.createDiscordenoMessage(data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,5 +107,5 @@ export async function sendMessage(
|
|||||||
}),
|
}),
|
||||||
)) as DiscordMessage;
|
)) as DiscordMessage;
|
||||||
|
|
||||||
return structures.createMessageStruct(result);
|
return structures.createDiscordenoMessage(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export async function createRole(
|
|||||||
});
|
});
|
||||||
|
|
||||||
const roleData = result as RoleData;
|
const roleData = result as RoleData;
|
||||||
const role = await structures.createRoleStruct(roleData);
|
const role = await structures.createDiscordenoRole(roleData);
|
||||||
const guild = await cacheHandlers.get("guilds", guildId);
|
const guild = await cacheHandlers.get("guilds", guildId);
|
||||||
guild?.roles.set(role.id, role);
|
guild?.roles.set(role.id, role);
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,6 @@ export async function editWebhookMessage(
|
|||||||
{ ...options, allowed_mentions: options.allowed_mentions },
|
{ ...options, allowed_mentions: options.allowed_mentions },
|
||||||
) as MessageCreateOptions;
|
) as MessageCreateOptions;
|
||||||
|
|
||||||
const message = await structures.createMessageStruct(result);
|
const message = await structures.createDiscordenoMessage(result);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,5 +60,5 @@ export async function executeWebhook(
|
|||||||
);
|
);
|
||||||
if (!options.wait) return;
|
if (!options.wait) return;
|
||||||
|
|
||||||
return structures.createMessageStruct(result as MessageCreateOptions);
|
return structures.createDiscordenoMessage(result as MessageCreateOptions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,11 @@ import { PermissionStrings } from "../types/permissions/permission_strings.ts";
|
|||||||
import { VoiceState } from "../types/voice/voice_state.ts";
|
import { VoiceState } from "../types/voice/voice_state.ts";
|
||||||
import { Collection } from "../util/collection.ts";
|
import { Collection } from "../util/collection.ts";
|
||||||
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
||||||
import { MessageStruct } from "./message.ts";
|
import { DiscordenoGuild } from "./guild.ts";
|
||||||
|
import { DiscordenoMember } from "./member.ts";
|
||||||
|
import { DiscordenoMessage } from "./message.ts";
|
||||||
|
|
||||||
const baseChannel: Partial<ChannelStruct> = {
|
const baseChannel: Partial<DiscordenoChannel> = {
|
||||||
get guild() {
|
get guild() {
|
||||||
return cache.guilds.get(this.guildId!);
|
return cache.guilds.get(this.guildId!);
|
||||||
},
|
},
|
||||||
@@ -70,7 +72,7 @@ const baseChannel: Partial<ChannelStruct> = {
|
|||||||
|
|
||||||
/** Create a structure object */
|
/** Create a structure object */
|
||||||
// deno-lint-ignore require-await
|
// deno-lint-ignore require-await
|
||||||
export async function createChannelStruct(
|
export async function createDiscordenoChannel(
|
||||||
data: DiscordChannel,
|
data: DiscordChannel,
|
||||||
guildId?: string,
|
guildId?: string,
|
||||||
) {
|
) {
|
||||||
@@ -84,13 +86,13 @@ export async function createChannelStruct(
|
|||||||
Object.keys(rest).forEach((key) => {
|
Object.keys(rest).forEach((key) => {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running forEach loop in createChannelStruct function.`,
|
`Running forEach loop in createDiscordenoChannel function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(rest[key]);
|
props[key] = createNewProp(rest[key]);
|
||||||
});
|
});
|
||||||
|
|
||||||
const channel: ChannelStruct = Object.create(baseChannel, {
|
const channel: DiscordenoChannel = Object.create(baseChannel, {
|
||||||
...props,
|
...props,
|
||||||
guildId: createNewProp(guildId || rawGuildId),
|
guildId: createNewProp(guildId || rawGuildId),
|
||||||
lastPinTimestamp: createNewProp(
|
lastPinTimestamp: createNewProp(
|
||||||
@@ -101,7 +103,7 @@ export async function createChannelStruct(
|
|||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ChannelStruct extends Channel {
|
export interface DiscordenoChannel extends Channel {
|
||||||
// GETTERS
|
// GETTERS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -109,13 +111,13 @@ export interface ChannelStruct extends Channel {
|
|||||||
*
|
*
|
||||||
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
||||||
*/
|
*/
|
||||||
guild?: GuildStruct;
|
guild?: DiscordenoGuild;
|
||||||
/**
|
/**
|
||||||
* Gets the messages from cache that were sent in this channel
|
* Gets the messages from cache that were sent in this channel
|
||||||
*
|
*
|
||||||
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
||||||
*/
|
*/
|
||||||
messages: Collection<string, MessageStruct>;
|
messages: Collection<string, DiscordenoMessage>;
|
||||||
/** The mention of the channel */
|
/** The mention of the channel */
|
||||||
mention: string;
|
mention: string;
|
||||||
/**
|
/**
|
||||||
@@ -129,7 +131,7 @@ export interface ChannelStruct extends Channel {
|
|||||||
*
|
*
|
||||||
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
* ⚠️ ADVANCED: If you use the custom cache, these will not work for you. Getters can not be async and custom cache requires async.
|
||||||
*/
|
*/
|
||||||
connectedMembers?: Collection<string, MemberStruct | undefined>;
|
connectedMembers?: Collection<string, DiscordenoMember | undefined>;
|
||||||
|
|
||||||
// METHODS
|
// METHODS
|
||||||
|
|
||||||
|
|||||||
+32
-24
@@ -33,14 +33,14 @@ import {
|
|||||||
createNewProp,
|
createNewProp,
|
||||||
snakeKeysToCamelCase,
|
snakeKeysToCamelCase,
|
||||||
} from "../util/utils.ts";
|
} from "../util/utils.ts";
|
||||||
import { ChannelStruct } from "./channel.ts";
|
import { DiscordenoChannel } from "./channel.ts";
|
||||||
import { MemberStruct } from "./member.ts";
|
import { DiscordenoMember } from "./member.ts";
|
||||||
import { structures } from "./mod.ts";
|
import { structures } from "./mod.ts";
|
||||||
import { RoleStruct } from "./role.ts";
|
import { DiscordenoRole } from "./role.ts";
|
||||||
|
|
||||||
export const initialMemberLoadQueue = new Map<string, GuildMember[]>();
|
export const initialMemberLoadQueue = new Map<string, GuildMember[]>();
|
||||||
|
|
||||||
const baseGuild: Partial<GuildStruct> = {
|
const baseGuild: Partial<DiscordenoGuild> = {
|
||||||
get members() {
|
get members() {
|
||||||
return cache.members.filter((member) => member.guilds.has(this.id!));
|
return cache.members.filter((member) => member.guilds.has(this.id!));
|
||||||
},
|
},
|
||||||
@@ -115,7 +115,7 @@ const baseGuild: Partial<GuildStruct> = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function createGuildStruct(
|
export async function createDiscordenoGuild(
|
||||||
data: DiscordGuild,
|
data: DiscordGuild,
|
||||||
shardId: number,
|
shardId: number,
|
||||||
) {
|
) {
|
||||||
@@ -132,34 +132,38 @@ export async function createGuildStruct(
|
|||||||
|
|
||||||
const roles = await Promise.all(
|
const roles = await Promise.all(
|
||||||
(data.roles || []).map((role) =>
|
(data.roles || []).map((role) =>
|
||||||
structures.createRoleStruct({ role, guild_id: rest.id })
|
structures.createDiscordenoRole({ role, guild_id: rest.id })
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
await Promise.all(channels.map(async (channel) => {
|
await Promise.all(channels.map(async (channel) => {
|
||||||
const channelStruct = await structures.createChannelStruct(
|
const discordenoChannel = await structures.createDiscordenoChannel(
|
||||||
channel,
|
channel,
|
||||||
rest.id,
|
rest.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
return cacheHandlers.set("channels", channelStruct.id, channelStruct);
|
return cacheHandlers.set(
|
||||||
|
"channels",
|
||||||
|
discordenoChannel.id,
|
||||||
|
discordenoChannel,
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const props: Record<string, ReturnType<typeof createNewProp>> = {};
|
const props: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||||
for (const key of Object.keys(rest)) {
|
for (const key of Object.keys(rest)) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of loop in createGuildStruct function.`,
|
`Running for of loop in createDiscordenoGuild function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(rest[key]);
|
props[key] = createNewProp(rest[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const guild = Object.create(baseGuild, {
|
const guild: DiscordenoGuild = Object.create(baseGuild, {
|
||||||
...props,
|
...props,
|
||||||
shardId: createNewProp(shardId),
|
shardId: createNewProp(shardId),
|
||||||
roles: createNewProp(
|
roles: createNewProp(
|
||||||
new Collection(roles.map((r: RoleStruct) => [r.id, r])),
|
new Collection(roles.map((r: DiscordenoRole) => [r.id, r])),
|
||||||
),
|
),
|
||||||
joinedAt: createNewProp(Date.parse(joinedAt)),
|
joinedAt: createNewProp(Date.parse(joinedAt)),
|
||||||
presences: createNewProp(
|
presences: createNewProp(
|
||||||
@@ -184,22 +188,26 @@ export async function createGuildStruct(
|
|||||||
else {
|
else {
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
members.map(async (member) => {
|
members.map(async (member) => {
|
||||||
const memberStruct = await structures.createMemberStruct(
|
const discordenoMember = await structures.createDiscordenoMember(
|
||||||
camelKeysToSnakeCase(member) as Omit<DiscordGuildMember, "user"> & {
|
camelKeysToSnakeCase(member) as Omit<DiscordGuildMember, "user"> & {
|
||||||
user: DiscordUser;
|
user: DiscordUser;
|
||||||
},
|
},
|
||||||
guild.id,
|
guild.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
return cacheHandlers.set("members", memberStruct.id, memberStruct);
|
return cacheHandlers.set(
|
||||||
|
"members",
|
||||||
|
discordenoMember.id,
|
||||||
|
discordenoMember,
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return guild as GuildStruct;
|
return guild;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GuildStruct extends
|
export interface DiscordenoGuild extends
|
||||||
Omit<
|
Omit<
|
||||||
Guild,
|
Guild,
|
||||||
| "roles"
|
| "roles"
|
||||||
@@ -214,7 +222,7 @@ export interface GuildStruct extends
|
|||||||
/** Total number of members in this guild */
|
/** Total number of members in this guild */
|
||||||
memberCount?: number;
|
memberCount?: number;
|
||||||
/** The roles in the guild */
|
/** The roles in the guild */
|
||||||
roles: Collection<string, RoleStruct>;
|
roles: Collection<string, DiscordenoRole>;
|
||||||
/** The presences of all the users in the guild. */
|
/** The presences of all the users in the guild. */
|
||||||
presences: Collection<string, PresenceUpdate>;
|
presences: Collection<string, PresenceUpdate>;
|
||||||
/** The Voice State data for each user in a voice channel in this server. */
|
/** The Voice State data for each user in a voice channel in this server. */
|
||||||
@@ -224,19 +232,19 @@ export interface GuildStruct extends
|
|||||||
|
|
||||||
// GETTERS
|
// GETTERS
|
||||||
/** Members in this guild. */
|
/** Members in this guild. */
|
||||||
members: Collection<string, MemberStruct>;
|
members: Collection<string, DiscordenoMember>;
|
||||||
/** Channels in this guild. */
|
/** Channels in this guild. */
|
||||||
channels: Collection<string, ChannelStruct>;
|
channels: Collection<string, DiscordenoChannel>;
|
||||||
/** The afk channel if one is set */
|
/** The afk channel if one is set */
|
||||||
afkChannel?: ChannelStruct;
|
afkChannel?: DiscordenoChannel;
|
||||||
/** The public update channel if one is set */
|
/** The public update channel if one is set */
|
||||||
publicUpdatesChannel?: ChannelStruct;
|
publicUpdatesChannel?: DiscordenoChannel;
|
||||||
/** The rules channel in this guild if one is set */
|
/** The rules channel in this guild if one is set */
|
||||||
rulesChannel?: ChannelStruct;
|
rulesChannel?: DiscordenoChannel;
|
||||||
/** The system channel in this guild if one is set */
|
/** The system channel in this guild if one is set */
|
||||||
systemChannel?: ChannelStruct;
|
systemChannel?: DiscordenoChannel;
|
||||||
/** The bot member in this guild if cached */
|
/** The bot member in this guild if cached */
|
||||||
bot?: MemberStruct;
|
bot?: DiscordenoMember;
|
||||||
/** The bot guild member in this guild if cached */
|
/** The bot guild member in this guild if cached */
|
||||||
botMember?: Omit<GuildMember, "joinedAt" | "premiumSince"> & {
|
botMember?: Omit<GuildMember, "joinedAt" | "premiumSince"> & {
|
||||||
joinedAt: number;
|
joinedAt: number;
|
||||||
@@ -245,7 +253,7 @@ export interface GuildStruct extends
|
|||||||
/** The bots voice state if there is one in this guild */
|
/** The bots voice state if there is one in this guild */
|
||||||
botVoice?: VoiceState;
|
botVoice?: VoiceState;
|
||||||
/** The owner member of this guild */
|
/** The owner member of this guild */
|
||||||
owner?: MemberStruct;
|
owner?: DiscordenoMember;
|
||||||
/** Whether or not this guild is partnered */
|
/** Whether or not this guild is partnered */
|
||||||
partnered: boolean;
|
partnered: boolean;
|
||||||
/** Whether or not this guild is verified */
|
/** Whether or not this guild is verified */
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ import { DiscordImageSize } from "../types/misc/image_size.ts";
|
|||||||
import { DiscordUser, User } from "../types/users/user.ts";
|
import { DiscordUser, User } from "../types/users/user.ts";
|
||||||
import { Collection } from "../util/collection.ts";
|
import { Collection } from "../util/collection.ts";
|
||||||
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
||||||
import { GuildStruct } from "./guild.ts";
|
import { DiscordenoGuild } from "./guild.ts";
|
||||||
|
|
||||||
const baseMember: Partial<MemberStruct> = {
|
const baseMember: Partial<DiscordenoMember> = {
|
||||||
get avatarURL() {
|
get avatarURL() {
|
||||||
return avatarURL(this.id!, this.discriminator!, this.avatar!);
|
return avatarURL(this.id!, this.discriminator!, this.avatar!);
|
||||||
},
|
},
|
||||||
@@ -71,7 +71,7 @@ const baseMember: Partial<MemberStruct> = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function createMemberStruct(
|
export async function createDiscordenoMember(
|
||||||
// The `user` param in `DiscordGuildMember` is optional since discord does not send it in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events. But this data in there is required to build this structure so it is required in this case
|
// The `user` param in `DiscordGuildMember` is optional since discord does not send it in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events. But this data in there is required to build this structure so it is required in this case
|
||||||
data: Omit<DiscordGuildMember, "user"> & { user: DiscordUser },
|
data: Omit<DiscordGuildMember, "user"> & { user: DiscordUser },
|
||||||
guildId: string,
|
guildId: string,
|
||||||
@@ -90,7 +90,7 @@ export async function createMemberStruct(
|
|||||||
for (const key of Object.keys(rest)) {
|
for (const key of Object.keys(rest)) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of loop for Object.keys(rest) in createMemberStruct function.`,
|
`Running for of loop for Object.keys(rest) in DiscordenoMember function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(rest[key]);
|
props[key] = createNewProp(rest[key]);
|
||||||
@@ -99,13 +99,13 @@ export async function createMemberStruct(
|
|||||||
for (const key of Object.keys(user)) {
|
for (const key of Object.keys(user)) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of for Object.keys(user) loop in createMemberStruct function.`,
|
`Running for of for Object.keys(user) loop in DiscordenoMember function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(user[key]);
|
props[key] = createNewProp(user[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const member: MemberStruct = Object.create(baseMember, {
|
const member: DiscordenoMember = Object.create(baseMember, {
|
||||||
...props,
|
...props,
|
||||||
/** The guild related data mapped by guild id */
|
/** The guild related data mapped by guild id */
|
||||||
guilds: createNewProp(new Collection<string, GuildMember>()),
|
guilds: createNewProp(new Collection<string, GuildMember>()),
|
||||||
@@ -116,7 +116,7 @@ export async function createMemberStruct(
|
|||||||
for (const [id, guild] of cached.guilds.entries()) {
|
for (const [id, guild] of cached.guilds.entries()) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of for cached.guilds.entries() loop in createMemberStruct function.`,
|
`Running for of for cached.guilds.entries() loop in DiscordenoMember function.`,
|
||||||
);
|
);
|
||||||
member.guilds.set(id, guild);
|
member.guilds.set(id, guild);
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ export async function createMemberStruct(
|
|||||||
return member;
|
return member;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MemberStruct extends GuildMember, User {
|
export interface DiscordenoMember extends GuildMember, User {
|
||||||
/** The guild related data mapped by guild id */
|
/** The guild related data mapped by guild id */
|
||||||
guilds: Collection<
|
guilds: Collection<
|
||||||
string,
|
string,
|
||||||
@@ -160,7 +160,7 @@ export interface MemberStruct extends GuildMember, User {
|
|||||||
options: { size?: DiscordImageSize; format?: DiscordImageFormat },
|
options: { size?: DiscordImageSize; format?: DiscordImageFormat },
|
||||||
): string;
|
): string;
|
||||||
/** Returns the guild for this guildID */
|
/** Returns the guild for this guildID */
|
||||||
guild(guildID: string): GuildStruct | undefined;
|
guild(guildID: string): DiscordenoGuild | undefined;
|
||||||
/** Get the nickname or the username if no nickname */
|
/** Get the nickname or the username if no nickname */
|
||||||
name(guildID: string): string;
|
name(guildID: string): string;
|
||||||
/** Get the guild member object for the specified guild */
|
/** Get the guild member object for the specified guild */
|
||||||
|
|||||||
+15
-15
@@ -15,12 +15,12 @@ import { EditMessage } from "../types/messages/edit_message.ts";
|
|||||||
import { DiscordMessage, Message } from "../types/messages/message.ts";
|
import { DiscordMessage, Message } from "../types/messages/message.ts";
|
||||||
import { CHANNEL_MENTION_REGEX } from "../util/constants.ts";
|
import { CHANNEL_MENTION_REGEX } from "../util/constants.ts";
|
||||||
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
||||||
import { ChannelStruct } from "./channel.ts";
|
import { DiscordenoChannel } from "./channel.ts";
|
||||||
import { GuildStruct } from "./guild.ts";
|
import { DiscordenoGuild } from "./guild.ts";
|
||||||
import { MemberStruct } from "./member.ts";
|
import { DiscordenoMember } from "./member.ts";
|
||||||
import { RoleStruct } from "./role.ts";
|
import { DiscordenoRole } from "./role.ts";
|
||||||
|
|
||||||
const baseMessage: Partial<MessageStruct> = {
|
const baseMessage: Partial<DiscordenoMessage> = {
|
||||||
get channel() {
|
get channel() {
|
||||||
if (this.guildId) return cache.channels.get(this.channelId!);
|
if (this.guildId) return cache.channels.get(this.channelId!);
|
||||||
return cache.channels.get(this.author?.id!);
|
return cache.channels.get(this.author?.id!);
|
||||||
@@ -117,7 +117,7 @@ const baseMessage: Partial<MessageStruct> = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function createMessageStruct(data: DiscordMessage) {
|
export async function createDiscordenoMessage(data: DiscordMessage) {
|
||||||
const {
|
const {
|
||||||
guildId = "",
|
guildId = "",
|
||||||
channelId,
|
channelId,
|
||||||
@@ -132,7 +132,7 @@ export async function createMessageStruct(data: DiscordMessage) {
|
|||||||
for (const key of Object.keys(rest)) {
|
for (const key of Object.keys(rest)) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of loop in createMessageStruct function.`,
|
`Running for of loop in createDiscordenoMessage function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(rest[key]);
|
props[key] = createNewProp(rest[key]);
|
||||||
@@ -142,7 +142,7 @@ export async function createMessageStruct(data: DiscordMessage) {
|
|||||||
const guildIdFinal = guildId ||
|
const guildIdFinal = guildId ||
|
||||||
(await cacheHandlers.get("channels", channelId))?.guildId || "";
|
(await cacheHandlers.get("channels", channelId))?.guildId || "";
|
||||||
|
|
||||||
const message: MessageStruct = Object.create(baseMessage, {
|
const message: DiscordenoMessage = Object.create(baseMessage, {
|
||||||
...props,
|
...props,
|
||||||
/** The message id of the original message if this message was sent as a reply. If null, the original message was deleted. */
|
/** The message id of the original message if this message was sent as a reply. If null, the original message was deleted. */
|
||||||
channelId: createNewProp(channelId),
|
channelId: createNewProp(channelId),
|
||||||
@@ -169,7 +169,7 @@ export async function createMessageStruct(data: DiscordMessage) {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MessageStruct extends Message {
|
export interface DiscordenoMessage extends Message {
|
||||||
// For better user experience
|
// For better user experience
|
||||||
/** Ids of users specifically mentioned in the message */
|
/** Ids of users specifically mentioned in the message */
|
||||||
mentionedUserIds: string[];
|
mentionedUserIds: string[];
|
||||||
@@ -180,11 +180,11 @@ export interface MessageStruct extends Message {
|
|||||||
// GETTERS
|
// GETTERS
|
||||||
|
|
||||||
/** The channel where this message was sent. Can be undefined if uncached. */
|
/** The channel where this message was sent. Can be undefined if uncached. */
|
||||||
channel?: ChannelStruct;
|
channel?: DiscordenoChannel;
|
||||||
/** The guild of this message. Can be undefined if not in cache or in DM */
|
/** The guild of this message. Can be undefined if not in cache or in DM */
|
||||||
guild?: GuildStruct;
|
guild?: DiscordenoGuild;
|
||||||
/** The member for the user who sent the message. Can be undefined if not in cache or in dm. */
|
/** The member for the user who sent the message. Can be undefined if not in cache or in dm. */
|
||||||
member?: MemberStruct;
|
member?: DiscordenoMember;
|
||||||
/** The guild member details for this guild and member. Can be undefined if not in cache or in dm. */
|
/** The guild member details for this guild and member. Can be undefined if not in cache or in dm. */
|
||||||
guildMember?: Omit<GuildMember, "joinedAt" | "premiumSince"> & {
|
guildMember?: Omit<GuildMember, "joinedAt" | "premiumSince"> & {
|
||||||
joinedAt: number;
|
joinedAt: number;
|
||||||
@@ -193,11 +193,11 @@ export interface MessageStruct extends Message {
|
|||||||
/** The url link to this message */
|
/** The url link to this message */
|
||||||
link: string;
|
link: string;
|
||||||
/** The role objects for all the roles that were mentioned in this message */
|
/** The role objects for all the roles that were mentioned in this message */
|
||||||
mentionedRoles: (RoleStruct | undefined)[];
|
mentionedRoles: (DiscordenoRole | undefined)[];
|
||||||
/** The channel objects for all the channels that were mentioned in this message. */
|
/** The channel objects for all the channels that were mentioned in this message. */
|
||||||
mentionedChannels: (ChannelStruct | undefined)[];
|
mentionedChannels: (DiscordenoChannel | undefined)[];
|
||||||
/** The member objects for all the members that were mentioned in this message. */
|
/** The member objects for all the members that were mentioned in this message. */
|
||||||
mentionedMembers: (MemberStruct | undefined)[];
|
mentionedMembers: (DiscordenoMember | undefined)[];
|
||||||
|
|
||||||
// METHODS
|
// METHODS
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -1,17 +1,17 @@
|
|||||||
import { createChannelStruct } from "./channel.ts";
|
import { createDiscordenoChannel } from "./channel.ts";
|
||||||
import { createGuildStruct } from "./guild.ts";
|
import { createDiscordenoGuild } from "./guild.ts";
|
||||||
import { createMemberStruct } from "./member.ts";
|
import { createDiscordenoMember } from "./member.ts";
|
||||||
import { createMessageStruct } from "./message.ts";
|
import { createDiscordenoMessage } from "./message.ts";
|
||||||
import { createRoleStruct } from "./role.ts";
|
import { createDiscordenoRole } from "./role.ts";
|
||||||
import { createTemplateStruct } from "./template.ts";
|
import { createTemplateStruct } from "./template.ts";
|
||||||
|
|
||||||
/** This is the placeholder where the structure creation functions are kept. */
|
/** This is the placeholder where the structure creation functions are kept. */
|
||||||
export let structures = {
|
export let structures = {
|
||||||
createChannelStruct,
|
createDiscordenoChannel,
|
||||||
createGuildStruct,
|
createDiscordenoGuild,
|
||||||
createMemberStruct,
|
createDiscordenoMember,
|
||||||
createMessageStruct,
|
createDiscordenoMessage,
|
||||||
createRoleStruct,
|
createDiscordenoRole,
|
||||||
createTemplateStruct,
|
createTemplateStruct,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ import { Role } from "../types/permissions/role.ts";
|
|||||||
import { Collection } from "../util/collection.ts";
|
import { Collection } from "../util/collection.ts";
|
||||||
import { highestRole } from "../util/permissions.ts";
|
import { highestRole } from "../util/permissions.ts";
|
||||||
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
import { createNewProp, snakeKeysToCamelCase } from "../util/utils.ts";
|
||||||
|
import { DiscordenoGuild } from "./guild.ts";
|
||||||
|
import { DiscordenoMember } from "./member.ts";
|
||||||
|
|
||||||
const baseRole: Partial<RoleStruct> = {
|
const baseRole: Partial<DiscordenoRole> = {
|
||||||
get guild() {
|
get guild() {
|
||||||
return cache.guilds.get(this.guildId!);
|
return cache.guilds.get(this.guildId!);
|
||||||
},
|
},
|
||||||
@@ -65,7 +67,7 @@ const baseRole: Partial<RoleStruct> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// deno-lint-ignore require-await
|
// deno-lint-ignore require-await
|
||||||
export async function createRoleStruct(data: DiscordGuildRoleCreate) {
|
export async function createDiscordenoRole(data: DiscordGuildRoleCreate) {
|
||||||
const {
|
const {
|
||||||
tags = {},
|
tags = {},
|
||||||
...rest
|
...rest
|
||||||
@@ -77,13 +79,13 @@ export async function createRoleStruct(data: DiscordGuildRoleCreate) {
|
|||||||
for (const key of Object.keys(rest)) {
|
for (const key of Object.keys(rest)) {
|
||||||
eventHandlers.debug?.(
|
eventHandlers.debug?.(
|
||||||
"loop",
|
"loop",
|
||||||
`Running for of loop in createRoleStruct function.`,
|
`Running for of loop in createDiscordenoRole function.`,
|
||||||
);
|
);
|
||||||
// @ts-ignore index signature
|
// @ts-ignore index signature
|
||||||
props[key] = createNewProp(rest[key]);
|
props[key] = createNewProp(rest[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const role: RoleStruct = Object.create(baseRole, {
|
const role: DiscordenoRole = Object.create(baseRole, {
|
||||||
...props,
|
...props,
|
||||||
botId: createNewProp(tags.botId),
|
botId: createNewProp(tags.botId),
|
||||||
isNitroBoostRole: createNewProp("premiumSubscriber" in tags),
|
isNitroBoostRole: createNewProp("premiumSubscriber" in tags),
|
||||||
@@ -93,7 +95,7 @@ export async function createRoleStruct(data: DiscordGuildRoleCreate) {
|
|||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RoleStruct extends Omit<Role, "tags"> {
|
export interface DiscordenoRole extends Omit<Role, "tags"> {
|
||||||
/** The bot id that is associated with this role. */
|
/** The bot id that is associated with this role. */
|
||||||
botId?: string;
|
botId?: string;
|
||||||
/** If this role is the nitro boost role. */
|
/** If this role is the nitro boost role. */
|
||||||
@@ -106,11 +108,11 @@ export interface RoleStruct extends Omit<Role, "tags"> {
|
|||||||
// GETTERS
|
// GETTERS
|
||||||
|
|
||||||
/** The guild where this role is. If undefined, the guild is not cached */
|
/** The guild where this role is. If undefined, the guild is not cached */
|
||||||
guild?: GuildStruct;
|
guild?: DiscordenoGuild;
|
||||||
/** The hex color for this role. */
|
/** The hex color for this role. */
|
||||||
hexColor: string;
|
hexColor: string;
|
||||||
/** The cached members that have this role */
|
/** The cached members that have this role */
|
||||||
members: Collection<string, MemberStruct>;
|
members: Collection<string, DiscordenoMember>;
|
||||||
/** The @ mention of the role in a string. */
|
/** The @ mention of the role in a string. */
|
||||||
mention: string;
|
mention: string;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user