change: ids to use bigint instead of string (#892)

* p1 of bigints change

* shtuff fixes and bits

* Commit from GitHub Actions (Lint)

* finish bigint structs

* typings fixes

* Commit from GitHub Actions (Lint)

* more fixes

* Commit from GitHub Actions (Lint)

* more fixes

* Commit from GitHub Actions (Lint)

* blame wolf

* Commit from GitHub Actions (Lint)

* foxed

* Commit from GitHub Actions (Lint)

* fix unit tests

* Commit from GitHub Actions (Lint)

* change: guildUpdate guild ID can't change

* delete server has been renamed to delete guild

* fixes

Co-authored-by: Skillz4Killz <Skillz4Killz@users.noreply.github.com>
Co-authored-by: ITOH <72305210+itohatweb@users.noreply.github.com>
This commit is contained in:
Skillz4Killz
2021-05-03 13:05:18 -04:00
committed by GitHub
parent ee164bff22
commit 3d39b3878a
186 changed files with 1341 additions and 610 deletions
+9 -2
View File
@@ -2,12 +2,19 @@ import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { GuildBanAddRemove } from "../../types/guilds/guild_ban_add_remove.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
export async function handleGuildBanAdd(data: DiscordGatewayPayload) {
const payload = data.d as GuildBanAddRemove;
const guild = await cacheHandlers.get("guilds", payload.guildId);
const guild = await cacheHandlers.get(
"guilds",
snowflakeToBigint(payload.guildId),
);
if (!guild) return;
const member = await cacheHandlers.get("members", payload.user.id);
const member = await cacheHandlers.get(
"members",
snowflakeToBigint(payload.user.id),
);
eventHandlers.guildBanAdd?.(guild, payload.user, member);
}
+9 -2
View File
@@ -2,12 +2,19 @@ import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { GuildBanAddRemove } from "../../types/guilds/guild_ban_add_remove.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
export async function handleGuildBanRemove(data: DiscordGatewayPayload) {
const payload = data.d as GuildBanAddRemove;
const guild = await cacheHandlers.get("guilds", payload.guildId);
const guild = await cacheHandlers.get(
"guilds",
snowflakeToBigint(payload.guildId),
);
if (!guild) return;
const member = await cacheHandlers.get("members", payload.user.id);
const member = await cacheHandlers.get(
"members",
snowflakeToBigint(payload.user.id),
);
eventHandlers.guildBanRemove?.(guild, payload.user, member);
}
+10 -9
View File
@@ -3,6 +3,7 @@ import { cache, cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { Guild } from "../../types/guilds/guild.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
import { ws } from "../../ws/ws.ts";
export async function handleGuildCreate(
@@ -11,24 +12,24 @@ export async function handleGuildCreate(
) {
const payload = data.d as Guild;
// When shards resume they emit GUILD_CREATE again.
if (await cacheHandlers.has("guilds", payload.id)) return;
if (await cacheHandlers.has("guilds", snowflakeToBigint(payload.id))) return;
const discordenoGuild = await structures.createDiscordenoGuild(
const guild = await structures.createDiscordenoGuild(
payload,
shardId,
);
await cacheHandlers.set("guilds", discordenoGuild.id, discordenoGuild);
await cacheHandlers.set("guilds", guild.id, guild);
const shard = ws.shards.get(shardId);
if (shard?.unavailableGuildIds.has(payload.id)) {
await cacheHandlers.delete("unavailableGuilds", payload.id);
if (shard?.unavailableGuildIds.has(guild.id)) {
await cacheHandlers.delete("unavailableGuilds", guild.id);
shard.unavailableGuildIds.delete(payload.id);
shard.unavailableGuildIds.delete(guild.id);
return eventHandlers.guildAvailable?.(discordenoGuild);
return eventHandlers.guildAvailable?.(guild);
}
if (!cache.isReady) return eventHandlers.guildLoaded?.(discordenoGuild);
eventHandlers.guildCreate?.(discordenoGuild);
if (!cache.isReady) return eventHandlers.guildLoaded?.(guild);
eventHandlers.guildCreate?.(guild);
}
+12 -8
View File
@@ -2,6 +2,7 @@ import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { UnavailableGuild } from "../../types/guilds/unavailable_guild.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
import { ws } from "../../ws/ws.ts";
export async function handleGuildDelete(
@@ -10,16 +11,19 @@ export async function handleGuildDelete(
) {
const payload = data.d as UnavailableGuild;
const guild = await cacheHandlers.get("guilds", payload.id);
const guild = await cacheHandlers.get(
"guilds",
snowflakeToBigint(payload.id),
);
if (!guild) return;
await cacheHandlers.delete("guilds", payload.id);
await cacheHandlers.delete("guilds", guild.id);
if (payload.unavailable) {
const shard = ws.shards.get(shardId);
if (shard) shard.unavailableGuildIds.add(payload.id);
if (shard) shard.unavailableGuildIds.add(guild.id);
await cacheHandlers.set("unavailableGuilds", payload.id, Date.now());
await cacheHandlers.set("unavailableGuilds", guild.id, Date.now());
eventHandlers.guildUnavailable?.(guild);
} else {
@@ -31,7 +35,7 @@ export async function handleGuildDelete(
"loop",
`1. Running forEach messages loop in CHANNEL_DELTE file.`,
);
if (message.guildId === payload.id) {
if (message.guildId === guild.id) {
cacheHandlers.delete("messages", message.id);
}
});
@@ -41,7 +45,7 @@ export async function handleGuildDelete(
"loop",
`2. Running forEach channels loop in CHANNEL_DELTE file.`,
);
if (channel.guildId === payload.id) {
if (channel.guildId === guild.id) {
cacheHandlers.delete("channels", channel.id);
}
});
@@ -51,9 +55,9 @@ export async function handleGuildDelete(
"loop",
`3. Running forEach members loop in CHANNEL_DELTE file.`,
);
if (!member.guilds.has(payload.id)) return;
if (!member.guilds.has(guild.id)) return;
member.guilds.delete(payload.id);
member.guilds.delete(guild.id);
if (!member.guilds.size) {
return cacheHandlers.delete("members", member.id);
@@ -2,13 +2,17 @@ import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { GuildIntegrationsUpdate } from "../../types/integration/guild_integrations_update.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
export async function handleGuildIntegrationsUpdate(
data: DiscordGatewayPayload,
) {
const payload = data.d as GuildIntegrationsUpdate;
const guild = await cacheHandlers.get("guilds", payload.guildId);
const guild = await cacheHandlers.get(
"guilds",
snowflakeToBigint(payload.guildId),
);
if (!guild) return;
eventHandlers.guildIntegrationsUpdate?.(guild);
+7 -2
View File
@@ -3,13 +3,18 @@ import { cacheHandlers } from "../../cache.ts";
import { GuildUpdateChange } from "../../types/discordeno/guild_update_change.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
import { Guild } from "../../types/guilds/guild.ts";
import { snowflakeToBigint } from "../../util/bigint.ts";
export async function handleGuildUpdate(data: DiscordGatewayPayload) {
const payload = data.d as Guild;
const newGuild = await cacheHandlers.get("guilds", payload.id);
const newGuild = await cacheHandlers.get(
"guilds",
snowflakeToBigint(payload.id),
);
if (!newGuild) return;
const keysToSkip = [
"id",
"roles",
"guildHashes",
"guildId",
@@ -40,7 +45,7 @@ export async function handleGuildUpdate(data: DiscordGatewayPayload) {
}
}).filter((change) => change) as GuildUpdateChange[];
await cacheHandlers.set("guilds", payload.id, newGuild);
await cacheHandlers.set("guilds", newGuild.id, newGuild);
eventHandlers.guildUpdate?.(newGuild, changes);
}