mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-17 03:38:17 +00:00
chore: setup "deno lint" (#331)
* chore: setup "deno lint" * ci(lint): add --unstable flat to lint script * lint * lint * refactor: destructure assignment for Message#guildID * chore: remove TODO comment * refactor: remove redundant async * chore: switch to Deno stable vscode ext * chore: remove ignore comments * chore: remove ignore comments * chore: remove @ts-ignore comment * fixes * fixes * chore: remove deno-lint-ignore comment * chore: add index signature
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
// deno-lint-ignore-file require-await no-explicit-any prefer-const
|
||||
|
||||
import { PresenceUpdatePayload } from "../../types/mod.ts";
|
||||
import { cache } from "../../util/cache.ts";
|
||||
import { Collection } from "../../util/collection.ts";
|
||||
|
||||
@@ -83,7 +83,6 @@ export async function handleInternalGuildUpdate(data: DiscordPayload) {
|
||||
.map(([key, value]) => {
|
||||
if (keysToSkip.includes(key)) return;
|
||||
|
||||
// @ts-ignore
|
||||
const cachedValue = cachedGuild[key];
|
||||
if (cachedValue !== value) {
|
||||
// Guild create sends undefined and update sends false.
|
||||
@@ -91,13 +90,12 @@ export async function handleInternalGuildUpdate(data: DiscordPayload) {
|
||||
|
||||
if (Array.isArray(cachedValue) && Array.isArray(value)) {
|
||||
const different = (cachedValue.length !== value.length) ||
|
||||
// @ts-ignore no idea how to fix this
|
||||
cachedValue.find((val) => !value.includes(val)) ||
|
||||
value.find((val) => !cachedValue.includes(val));
|
||||
if (!different) return;
|
||||
}
|
||||
|
||||
// This will update the cached guild with the new values
|
||||
// @ts-ignore
|
||||
cachedGuild[key] = value;
|
||||
return { key, oldValue: cachedValue, value };
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ export async function handleInternalInteractionCreate(data: DiscordPayload) {
|
||||
);
|
||||
}
|
||||
|
||||
export async function handleInternalApplicationCommandCreate(
|
||||
export function handleInternalApplicationCommandCreate(
|
||||
data: DiscordPayload,
|
||||
) {
|
||||
if (data.t !== "APPLICATION_COMMAND_CREATE") return;
|
||||
|
||||
@@ -56,7 +56,9 @@ export async function handleInternalGuildMemberUpdate(data: DiscordPayload) {
|
||||
|
||||
const newMemberData = {
|
||||
...payload,
|
||||
// deno-lint-ignore camelcase
|
||||
premium_since: payload.premium_since || undefined,
|
||||
// deno-lint-ignore camelcase
|
||||
joined_at: new Date(guildMember?.joinedAt || Date.now())
|
||||
.toISOString(),
|
||||
deaf: guildMember?.deaf || false,
|
||||
|
||||
@@ -11,10 +11,8 @@ import {
|
||||
import { cache } from "../../util/cache.ts";
|
||||
import { delay } from "../../util/utils.ts";
|
||||
import { allowNextShard } from "../../ws/shard_manager.ts";
|
||||
import {
|
||||
initialMemberLoadQueue,
|
||||
structures,
|
||||
} from "../structures/structures.ts";
|
||||
import { initialMemberLoadQueue } from "../structures/guild.ts";
|
||||
import { structures } from "../structures/mod.ts";
|
||||
import { cacheHandlers } from "./cache.ts";
|
||||
|
||||
/** This function is the internal handler for the ready event. Users can override this with controllers if desired. */
|
||||
@@ -75,7 +73,6 @@ export async function handleInternalUserUpdate(data: DiscordPayload) {
|
||||
if (!member) return;
|
||||
|
||||
Object.entries(userData).forEach(([key, value]) => {
|
||||
// @ts-ignore
|
||||
if (member[key] !== value) return member[key] = value;
|
||||
});
|
||||
return eventHandlers.botUpdate?.(userData);
|
||||
|
||||
@@ -399,9 +399,13 @@ export async function editChannel(
|
||||
|
||||
const payload = {
|
||||
...options,
|
||||
// deno-lint-ignore camelcase
|
||||
rate_limit_per_user: options.slowmode,
|
||||
// deno-lint-ignore camelcase
|
||||
parent_id: options.parentID,
|
||||
// deno-lint-ignore camelcase
|
||||
user_limit: options.userLimit,
|
||||
// deno-lint-ignore camelcase
|
||||
permission_overwrites: options.overwrites?.map(
|
||||
(overwrite) => {
|
||||
return {
|
||||
|
||||
@@ -429,8 +429,8 @@ export function fetchMembers(guild: Guild, options?: FetchMembersOptions) {
|
||||
options.limit = options.userIDs.length;
|
||||
}
|
||||
|
||||
return new Promise(async (resolve) => {
|
||||
await requestAllMembers(guild, resolve, options);
|
||||
return new Promise((resolve) => {
|
||||
requestAllMembers(guild, resolve, options);
|
||||
}) as Promise<Collection<string, Member>>;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { botID } from "../../bot.ts";
|
||||
import { RequestManager } from "../../rest/mod.ts";
|
||||
import {
|
||||
ChannelCreatePayload,
|
||||
DMChannelCreatePayload,
|
||||
EditMemberOptions,
|
||||
Errors,
|
||||
@@ -128,7 +129,9 @@ export async function sendDirectMessage(
|
||||
) as DMChannelCreatePayload;
|
||||
// Channel create event will have added this channel to the cache
|
||||
await cacheHandlers.delete("channels", dmChannelData.id);
|
||||
const channel = await structures.createChannel(dmChannelData);
|
||||
const channel = await structures.createChannel(
|
||||
dmChannelData as unknown as ChannelCreatePayload,
|
||||
);
|
||||
// Recreate the channel and add it undert he users id
|
||||
await cacheHandlers.set("channels", memberID, channel);
|
||||
dmChannel = channel;
|
||||
|
||||
@@ -32,34 +32,34 @@ export async function createChannel(
|
||||
guildID?: string,
|
||||
) {
|
||||
const {
|
||||
guild_id: rawGuildID,
|
||||
guild_id: rawGuildID = "",
|
||||
last_message_id: lastMessageID,
|
||||
user_limit: userLimit,
|
||||
rate_limit_per_user: rateLimitPerUser,
|
||||
parent_id: parentID,
|
||||
parent_id: parentID = undefined,
|
||||
last_pin_timestamp: lastPinTimestamp,
|
||||
permission_overwrites,
|
||||
nsfw,
|
||||
permission_overwrites: permissionOverwrites = [],
|
||||
nsfw = false,
|
||||
...rest
|
||||
} = data;
|
||||
|
||||
const restProps: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
const channel = Object.create(baseChannel, {
|
||||
...restProps,
|
||||
guildID: createNewProp(guildID || rawGuildID || ""),
|
||||
guildID: createNewProp(guildID || rawGuildID),
|
||||
lastMessageID: createNewProp(lastMessageID),
|
||||
userLimit: createNewProp(userLimit),
|
||||
rateLimitPerUser: createNewProp(rateLimitPerUser),
|
||||
parentID: createNewProp(parentID || undefined),
|
||||
parentID: createNewProp(parentID),
|
||||
lastPinTimestamp: createNewProp(
|
||||
lastPinTimestamp ? Date.parse(lastPinTimestamp) : undefined,
|
||||
),
|
||||
permissionOverwrites: createNewProp(permission_overwrites || []),
|
||||
nsfw: createNewProp(data.nsfw || false),
|
||||
permissionOverwrites: createNewProp(permissionOverwrites),
|
||||
nsfw: createNewProp(nsfw),
|
||||
});
|
||||
|
||||
await cacheHandlers.set("channels", data.id, channel);
|
||||
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
MemberCreatePayload,
|
||||
Presence,
|
||||
RoleData,
|
||||
ValueOf,
|
||||
VoiceState,
|
||||
} from "../../types/mod.ts";
|
||||
import { cache } from "../../util/cache.ts";
|
||||
@@ -32,8 +33,7 @@ import {
|
||||
unban,
|
||||
} from "../handlers/guild.ts";
|
||||
import { Member } from "./member.ts";
|
||||
import { Role, structures } from "./mod.ts";
|
||||
import { Channel } from "./structures.ts";
|
||||
import { Channel, Role, structures } from "./mod.ts";
|
||||
|
||||
export const initialMemberLoadQueue = new Map<string, MemberCreatePayload[]>();
|
||||
|
||||
@@ -135,7 +135,7 @@ export async function createGuild(data: CreateGuildPayload, shardID: number) {
|
||||
premium_subscription_count: premiumSubscriptionCount,
|
||||
preferred_locale: preferredLocale,
|
||||
joined_at: joinedAt,
|
||||
member_count: memberCount,
|
||||
member_count: memberCount = 0,
|
||||
voice_states: voiceStates = [],
|
||||
channels = [],
|
||||
members,
|
||||
@@ -155,7 +155,7 @@ export async function createGuild(data: CreateGuildPayload, shardID: number) {
|
||||
|
||||
const restProps: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
const guild = Object.create(baseGuild, {
|
||||
@@ -188,7 +188,7 @@ export async function createGuild(data: CreateGuildPayload, shardID: number) {
|
||||
presences: createNewProp(
|
||||
new Collection(presences.map((p: Presence) => [p.user.id, p])),
|
||||
),
|
||||
memberCount: createNewProp(memberCount || 0),
|
||||
memberCount: createNewProp(memberCount),
|
||||
voiceStates: createNewProp(
|
||||
new Collection(
|
||||
voiceStates.map((vs: VoiceState) => [
|
||||
@@ -345,6 +345,9 @@ export interface Guild {
|
||||
unban(memberID: string): ReturnType<typeof unban>;
|
||||
/** Get all the invites for this guild. Requires MANAGE_GUILD permission */
|
||||
invites(): ReturnType<typeof getInvites>;
|
||||
|
||||
// Index signature
|
||||
[key: string]: ValueOf<Guild>;
|
||||
}
|
||||
|
||||
interface CleanVoiceState extends VoiceState {
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
ImageSize,
|
||||
MemberCreatePayload,
|
||||
MessageContent,
|
||||
ValueOf,
|
||||
} from "../../types/mod.ts";
|
||||
import { cache } from "../../util/cache.ts";
|
||||
import { Collection } from "../../util/collection.ts";
|
||||
@@ -88,12 +89,12 @@ export async function createMember(data: MemberCreatePayload, guildID: string) {
|
||||
data.user || {};
|
||||
|
||||
const restProps: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
for (const key of Object.keys(user)) {
|
||||
// @ts-ignore
|
||||
restProps[key] = createNewProp(user[key]);
|
||||
}
|
||||
|
||||
@@ -198,4 +199,7 @@ export interface Member {
|
||||
roleID: string,
|
||||
reason?: string,
|
||||
): ReturnType<typeof removeRole>;
|
||||
|
||||
// Index signature
|
||||
[key: string]: ValueOf<Member>;
|
||||
}
|
||||
|
||||
@@ -34,15 +34,15 @@ const baseMessage: Partial<Message> = {
|
||||
return cache.channels.get(this.channelID!);
|
||||
},
|
||||
get guild() {
|
||||
if (!this.guildID) return;
|
||||
if (!this.guildID) return undefined;
|
||||
return cache.guilds.get(this.guildID);
|
||||
},
|
||||
get member() {
|
||||
if (!this.author?.id) return;
|
||||
if (!this.author?.id) return undefined;
|
||||
return cache.members.get(this.author?.id);
|
||||
},
|
||||
get guildMember() {
|
||||
if (!this.guildID) return;
|
||||
if (!this.guildID) return undefined;
|
||||
return this.member?.guilds.get(this.guildID);
|
||||
},
|
||||
get link() {
|
||||
@@ -116,12 +116,13 @@ const baseMessage: Partial<Message> = {
|
||||
},
|
||||
};
|
||||
|
||||
// deno-lint-ignore require-await
|
||||
export async function createMessage(data: MessageCreateOptions) {
|
||||
const {
|
||||
guild_id: guildID,
|
||||
guild_id: guildID = "",
|
||||
channel_id: channelID,
|
||||
mentions_everyone: mentionsEveryone,
|
||||
mention_channels: mentionChannelIDs,
|
||||
mention_channels: mentionChannelIDs = [],
|
||||
mention_roles: mentionRoleIDs,
|
||||
webhook_id: webhookID,
|
||||
message_reference: messageReference,
|
||||
@@ -133,7 +134,7 @@ export async function createMessage(data: MessageCreateOptions) {
|
||||
|
||||
const restProps: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
const message = Object.create(baseMessage, {
|
||||
@@ -141,11 +142,11 @@ export async function createMessage(data: MessageCreateOptions) {
|
||||
/** The message id of the original message if this message was sent as a reply. If null, the original message was deleted. */
|
||||
referencedMessageID: createNewProp(referencedMessageID),
|
||||
channelID: createNewProp(channelID),
|
||||
guildID: createNewProp(guildID || ""),
|
||||
guildID: createNewProp(guildID),
|
||||
mentions: createNewProp(data.mentions.map((m) => m.id)),
|
||||
mentionsEveryone: createNewProp(mentionsEveryone),
|
||||
mentionRoleIDs: createNewProp(mentionRoleIDs),
|
||||
mentionChannelIDs: createNewProp(mentionChannelIDs?.map((m) => m.id) || []),
|
||||
mentionChannelIDs: createNewProp(mentionChannelIDs.map((m) => m.id)),
|
||||
webhookID: createNewProp(webhookID),
|
||||
messageReference: createNewProp(messageReference),
|
||||
timestamp: createNewProp(Date.parse(data.timestamp)),
|
||||
|
||||
@@ -6,16 +6,16 @@ import { deleteRole, editRole } from "../handlers/guild.ts";
|
||||
import { Guild } from "./guild.ts";
|
||||
import { Member } from "./member.ts";
|
||||
|
||||
const baseRole: any = {
|
||||
const baseRole: Partial<Role> = {
|
||||
get guild() {
|
||||
return cache.guilds.find((g) => g.roles.has(this.id));
|
||||
return cache.guilds.find((g) => g.roles.has(this.id!));
|
||||
},
|
||||
get hexColor() {
|
||||
return this.color!.toString(16);
|
||||
},
|
||||
get members() {
|
||||
return cache.members.filter((m) =>
|
||||
m.guilds.some((g) => g.roles.includes(this.id))
|
||||
m.guilds.some((g) => g.roles.includes(this.id!))
|
||||
);
|
||||
},
|
||||
get mention() {
|
||||
@@ -66,19 +66,18 @@ const baseRole: any = {
|
||||
},
|
||||
};
|
||||
|
||||
export async function createRole(data: RoleData) {
|
||||
const { tags, ...rest } = data;
|
||||
|
||||
// deno-lint-ignore require-await
|
||||
export async function createRole({ tags = {}, ...rest }: RoleData) {
|
||||
const restProps: Record<string, ReturnType<typeof createNewProp>> = {};
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
const role = Object.create(baseRole, {
|
||||
...restProps,
|
||||
botID: createNewProp(tags?.bot_id),
|
||||
isNitroBoostRole: createNewProp("premium_subscriber" in (tags ?? {})),
|
||||
integrationID: createNewProp(tags?.integration_id),
|
||||
botID: createNewProp(tags.bot_id),
|
||||
isNitroBoostRole: createNewProp("premium_subscriber" in tags),
|
||||
integrationID: createNewProp(tags.integration_id),
|
||||
});
|
||||
|
||||
return role as Role;
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
export * from "./channel.ts";
|
||||
export * from "./guild.ts";
|
||||
export * from "./member.ts";
|
||||
export * from "./message.ts";
|
||||
export * from "./mod.ts";
|
||||
export * from "./role.ts";
|
||||
export * from "./template.ts";
|
||||
@@ -3,8 +3,10 @@ import { cache } from "../../util/cache.ts";
|
||||
import { createNewProp } from "../../util/utils.ts";
|
||||
import { Guild } from "./guild.ts";
|
||||
|
||||
const baseTemplate: any = {
|
||||
const baseTemplate: Partial<Template> = {
|
||||
get sourceGuild() {
|
||||
// deno-lint-ignore getter-return
|
||||
if (!this.sourceGuildID) return;
|
||||
return cache.guilds.get(this.sourceGuildID);
|
||||
},
|
||||
};
|
||||
@@ -25,7 +27,7 @@ export function createTemplate(
|
||||
|
||||
const restProps: Record<string, Partial<PropertyDescriptor>> = {};
|
||||
for (const key of Object.keys(rest)) {
|
||||
restProps[key] = createNewProp((rest as any)[key]);
|
||||
restProps[key] = createNewProp(rest[key]);
|
||||
}
|
||||
|
||||
return Object.create(baseTemplate, {
|
||||
|
||||
Reference in New Issue
Block a user