refactor: resolve async promises, fixed typos, and used inline variable for return (#299)

* Added await in async function, fixed typos and used inline variable for return

* Added await in async function, fixed typos and used inline variable for return

* Revert "Added await in async function, fixed typos and used inline variable for return"

This reverts commit f31caf5d

* Added await in async function, fixed typos and used inline variable for return

* Fixes format

* Fixes format 2

* Fixes format 4475757

* Fixes format 878757854786312378657865785785785785

* Change return to await

* Fixing more issues

* Fixing even more issues

* Fixing even more issues +

* Fixes format
This commit is contained in:
TriForMine
2020-12-30 09:31:11 +01:00
committed by GitHub
parent 6d7aa35d9c
commit 484f86638f
29 changed files with 126 additions and 141 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import { PresenceUpdatePayload } from "../../types/mod.ts";
import { cache } from "../../util/cache.ts";
import { Collection } from "../../util/collection.ts";
import { Channel, Guild, Member, Message } from "../structures/structures.ts";
import { Channel, Guild, Member, Message } from "../structures/mod.ts";
export type TableName =
| "guilds"
+5 -5
View File
@@ -4,7 +4,7 @@ import {
ChannelTypes,
DiscordPayload,
} from "../../types/mod.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalChannelCreate(data: DiscordPayload) {
@@ -29,7 +29,7 @@ export async function handleInternalChannelDelete(data: DiscordPayload) {
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (guild) {
guild.voiceStates.forEach(async (vs, key) => {
return Promise.all(guild.voiceStates.map(async (vs, key) => {
if (vs.channelID !== payload.id) return;
// Since this channel was deleted all voice states for this channel should be deleted
@@ -39,11 +39,11 @@ export async function handleInternalChannelDelete(data: DiscordPayload) {
if (!member) return;
eventHandlers.voiceChannelLeave?.(member, vs.channelID);
});
}));
}
}
cacheHandlers.delete("channels", payload.id);
await cacheHandlers.delete("channels", payload.id);
cacheHandlers.forEach("messages", (message) => {
if (message.channelID === payload.id) {
cacheHandlers.delete("messages", message.id);
@@ -58,7 +58,7 @@ export async function handleInternalChannelUpdate(data: DiscordPayload) {
const payload = data.d as ChannelCreatePayload;
const cachedChannel = await cacheHandlers.get("channels", payload.id);
const channel = await structures.createChannel(payload);
cacheHandlers.set("channels", channel.id, channel);
await cacheHandlers.set("channels", channel.id, channel);
if (!cachedChannel) return;
+5 -6
View File
@@ -8,7 +8,7 @@ import {
UpdateGuildPayload,
} from "../../types/mod.ts";
import { cache } from "../../util/cache.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalGuildCreate(
@@ -26,10 +26,10 @@ export async function handleInternalGuildCreate(
shardID,
);
cacheHandlers.set("guilds", guild.id, guild);
await cacheHandlers.set("guilds", guild.id, guild);
if (cacheHandlers.has("unavailableGuilds", payload.id)) {
cacheHandlers.delete("unavailableGuilds", payload.id);
if (await cacheHandlers.has("unavailableGuilds", payload.id)) {
await cacheHandlers.delete("unavailableGuilds", payload.id);
}
if (!cache.isReady) return eventHandlers.guildLoaded?.(guild);
@@ -52,7 +52,7 @@ export async function handleInternalGuildDelete(data: DiscordPayload) {
}
});
cacheHandlers.delete("guilds", payload.id);
await cacheHandlers.delete("guilds", payload.id);
if (payload.unavailable) {
return cacheHandlers.set("unavailableGuilds", payload.id, Date.now());
@@ -101,7 +101,6 @@ export async function handleInternalGuildUpdate(data: DiscordPayload) {
cachedGuild[key] = value;
return { key, oldValue: cachedValue, value };
}
return;
}).filter((change) => change) as GuildUpdateChange[];
return eventHandlers.guildUpdate?.(cachedGuild, changes);
+4 -2
View File
@@ -8,7 +8,7 @@ import {
} from "../../types/mod.ts";
import { cache } from "../../util/cache.ts";
import { Collection } from "../../util/collection.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalGuildMemberAdd(data: DiscordPayload) {
@@ -39,7 +39,9 @@ export async function handleInternalGuildMemberRemove(data: DiscordPayload) {
eventHandlers.guildMemberRemove?.(guild, payload.user, member);
member?.guilds.delete(guild.id);
if (member && !member.guilds.size) cacheHandlers.delete("members", member.id);
if (member && !member.guilds.size) {
await cacheHandlers.delete("members", member.id);
}
}
export async function handleInternalGuildMemberUpdate(data: DiscordPayload) {
+6 -6
View File
@@ -5,7 +5,7 @@ import {
MessageDeleteBulkPayload,
MessageDeletePayload,
} from "../../types/mod.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalMessageCreate(data: DiscordPayload) {
@@ -39,7 +39,7 @@ export async function handleInternalMessageCreate(data: DiscordPayload) {
const message = await structures.createMessage(payload);
// Cache the message
cacheHandlers.set("messages", payload.id, message);
await cacheHandlers.set("messages", payload.id, message);
eventHandlers.messageCreate?.(message);
}
@@ -56,7 +56,7 @@ export async function handleInternalMessageDelete(data: DiscordPayload) {
await cacheHandlers.get("messages", payload.id),
);
cacheHandlers.delete("messages", payload.id);
await cacheHandlers.delete("messages", payload.id);
}
export async function handleInternalMessageDeleteBulk(data: DiscordPayload) {
@@ -66,13 +66,13 @@ export async function handleInternalMessageDeleteBulk(data: DiscordPayload) {
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (!channel) return;
payload.ids.forEach(async (id) => {
return Promise.all(payload.ids.map(async (id) => {
eventHandlers.messageDelete?.(
{ id, channel },
await cacheHandlers.get("messages", id),
);
cacheHandlers.delete("messages", id);
});
await cacheHandlers.delete("messages", id);
}));
}
export async function handleInternalMessageUpdate(data: DiscordPayload) {
+10 -10
View File
@@ -54,7 +54,7 @@ export async function handleInternalPresenceUpdate(data: DiscordPayload) {
const payload = data.d as PresenceUpdatePayload;
const oldPresence = await cacheHandlers.get("presences", payload.user.id);
cacheHandlers.set("presences", payload.user.id, payload);
await cacheHandlers.set("presences", payload.user.id, payload);
return eventHandlers.presenceUpdate?.(payload, oldPresence);
}
@@ -113,15 +113,15 @@ export async function handleInternalVoiceStateUpdate(data: DiscordPayload) {
if (cachedState?.channelID !== payload.channel_id) {
// Either joined or moved channels
if (payload.channel_id) {
cachedState?.channelID
? // Was in a channel before
eventHandlers.voiceChannelSwitch?.(
member,
payload.channel_id,
cachedState.channelID,
)
: // Was not in a channel before so user just joined
eventHandlers.voiceChannelJoin?.(member, payload.channel_id);
if (cachedState?.channelID) { // Was in a channel before
eventHandlers.voiceChannelSwitch?.(
member,
payload.channel_id,
cachedState.channelID,
);
} else { // Was not in a channel before so user just joined
eventHandlers.voiceChannelJoin?.(member, payload.channel_id);
}
} // Left the channel
else if (cachedState?.channelID) {
guild.voiceStates.delete(payload.user_id);
+3 -3
View File
@@ -5,7 +5,7 @@ import {
MessageReactionPayload,
MessageReactionRemoveEmojiPayload,
} from "../../types/mod.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalMessageReactionAdd(data: DiscordPayload) {
@@ -34,7 +34,7 @@ export async function handleInternalMessageReactionAdd(data: DiscordPayload) {
: [newReaction];
}
cacheHandlers.set("messages", payload.message_id, message);
await cacheHandlers.set("messages", payload.message_id, message);
}
if (payload.member && payload.guild_id) {
@@ -87,7 +87,7 @@ export async function handleInternalMessageReactionRemove(
: [newReaction];
}
cacheHandlers.set("messages", payload.message_id, message);
await cacheHandlers.set("messages", payload.message_id, message);
}
if (payload.member && payload.guild_id) {
+2 -3
View File
@@ -4,7 +4,7 @@ import {
GuildRoleDeletePayload,
GuildRolePayload,
} from "../../types/mod.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts";
export async function handleInternalGuildRoleCreate(data: DiscordPayload) {
@@ -15,8 +15,7 @@ export async function handleInternalGuildRoleCreate(data: DiscordPayload) {
if (!guild) return;
const role = await structures.createRole(payload.role);
const roles = guild.roles.set(payload.role.id, role);
guild.roles = roles;
guild.roles = guild.roles.set(payload.role.id, role);
return eventHandlers.roleCreate?.(guild, role);
}
+8 -11
View File
@@ -22,7 +22,7 @@ import {
calculateBits,
} from "../../util/permissions.ts";
import { cacheHandlers } from "../controllers/cache.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
/** Checks if a channel overwrite for a user id or a role id has permission in this channel */
export function channelOverwriteHasPermission(
@@ -38,8 +38,8 @@ export function channelOverwriteHasPermission(
if (overwrite) {
const allowBits = overwrite.allow;
const denyBits = overwrite.deny;
if (BigInt(denyBits) & BigInt(Permissions[perm])) return false;
if (BigInt(allowBits) & BigInt(Permissions[perm])) return true;
if (BigInt(denyBits) && BigInt(Permissions[perm])) return false;
if (BigInt(allowBits) && BigInt(Permissions[perm])) return true;
}
return false;
});
@@ -303,7 +303,9 @@ export async function getChannelWebhooks(channelID: string) {
) {
throw new Error(Errors.MISSING_MANAGE_WEBHOOKS);
}
return RequestManager.get(endpoints.CHANNEL_WEBHOOKS(channelID)) as Promise<
return await RequestManager.get(
endpoints.CHANNEL_WEBHOOKS(channelID),
) as Promise<
WebhookPayload[]
>;
}
@@ -461,12 +463,7 @@ export async function isChannelSynced(channelID: string) {
ow.id === overwrite.id
);
if (!permission) return false;
if (
overwrite.allow !== permission.allow || overwrite.deny !== permission.deny
) {
return false;
}
return true;
return !(overwrite.allow !== permission.allow ||
overwrite.deny !== permission.deny);
});
}
+12 -22
View File
@@ -38,12 +38,7 @@ import { botHasPermission, calculateBits } from "../../util/permissions.ts";
import { formatImageURL, urlToBase64 } from "../../util/utils.ts";
import { requestAllMembers } from "../../ws/shard_manager.ts";
import { cacheHandlers } from "../controllers/cache.ts";
import {
Guild,
Member,
structures,
Template,
} from "../structures/structures.ts";
import { Guild, Member, structures, Template } from "../structures/mod.ts";
/** Create a new guild. Returns a guild object on success. Fires a Guild Create Gateway event. This endpoint can be used only by bots in less than 10 guilds. */
export async function createServer(options: CreateServerOptions) {
@@ -135,8 +130,7 @@ export async function createGuildChannel(
type: options?.type || ChannelTypes.GUILD_TEXT,
})) as ChannelCreatePayload;
const channel = await structures.createChannel(result);
return channel;
return await structures.createChannel(result);
}
/** Delete a channel in your server. Bot needs MANAGE_CHANNEL permissions in the server. */
@@ -167,7 +161,7 @@ export async function getChannels(guildID: string, addToCache = true) {
return Promise.all(result.map(async (res) => {
const channel = await structures.createChannel(res, guildID);
if (addToCache) {
cacheHandlers.set("channels", channel.id, channel);
await cacheHandlers.set("channels", channel.id, channel);
}
return channel;
}));
@@ -182,7 +176,7 @@ export async function getChannel(channelID: string, addToCache = true) {
endpoints.GUILD_CHANNEL(channelID),
) as ChannelCreatePayload;
const channel = await structures.createChannel(result, result.guild_id);
if (addToCache) cacheHandlers.set("channels", channel.id, channel);
if (addToCache) await cacheHandlers.set("channels", channel.id, channel);
return channel;
}
@@ -192,7 +186,7 @@ export function swapChannels(
channelPositions: PositionSwap[],
) {
if (channelPositions.length < 2) {
throw "You must provide atleast two channels to be swapped.";
throw "You must provide at least two channels to be swapped.";
}
return RequestManager.patch(
endpoints.GUILD_CHANNELS(guildID),
@@ -216,8 +210,7 @@ export async function getMember(
endpoints.GUILD_MEMBER(guildID, id),
) as MemberCreatePayload;
const member = await structures.createMember(data, guildID);
return member;
return await structures.createMember(data, guildID);
}
/** Returns guild member objects for the specified user by their nickname/username.
@@ -310,8 +303,6 @@ export async function createGuildRole(
throw new Error(Errors.MISSING_MANAGE_ROLES);
}
const bits = calculateBits(options.permissions || []);
const result = await RequestManager.post(
endpoints.GUILD_ROLES(guildID),
{
@@ -410,7 +401,7 @@ export async function pruneMembers(guildID: string, options: PruneOptions) {
throw new Error(Errors.MISSING_KICK_MEMBERS);
}
RequestManager.post(
return RequestManager.post(
endpoints.GUILD_PRUNE(guildID),
{ ...options, include_roles: options.roles.join(",") },
);
@@ -428,7 +419,7 @@ export function fetchMembers(guild: Guild, options?: FetchMembersOptions) {
// You can request 1 member without the intent
if (
(!options?.limit || options.limit > 1) &&
!(identifyPayload.intents & Intents.GUILD_MEMBERS)
!(identifyPayload.intents && Intents.GUILD_MEMBERS)
) {
throw new Error(Errors.MISSING_INTENT_GUILD_MEMBERS);
}
@@ -437,8 +428,8 @@ export function fetchMembers(guild: Guild, options?: FetchMembersOptions) {
options.limit = options.userIDs.length;
}
return new Promise((resolve) => {
requestAllMembers(guild, resolve, options);
return new Promise(async (resolve) => {
await requestAllMembers(guild, resolve, options);
}) as Promise<Collection<string, Member>>;
}
@@ -565,7 +556,7 @@ export async function getBan(guildID: string, memberID: string) {
throw new Error(Errors.MISSING_BAN_MEMBERS);
}
return RequestManager.get(
return await RequestManager.get(
endpoints.GUILD_BAN(guildID, memberID),
) as Promise<BannedUser>;
}
@@ -694,11 +685,10 @@ export async function createGuildFromTemplate(
data.icon = await urlToBase64(data.icon);
}
const guild = await RequestManager.post(
return await RequestManager.post(
endpoints.GUILD_TEMPLATE(templateCode),
data,
) as Promise<CreateGuildPayload>;
return guild;
}
/**
+7 -7
View File
@@ -16,7 +16,7 @@ import {
} from "../../util/permissions.ts";
import { formatImageURL, urlToBase64 } from "../../util/utils.ts";
import { cacheHandlers } from "../controllers/cache.ts";
import { Member, structures } from "../structures/structures.ts";
import { Member, structures } from "../structures/mod.ts";
import { sendMessage } from "./channel.ts";
/** The users custom avatar or the default avatar if you don't have a member object. */
@@ -127,10 +127,10 @@ export async function sendDirectMessage(
{ recipient_id: memberID },
) as DMChannelCreatePayload;
// Channel create event will have added this channel to the cache
cacheHandlers.delete("channels", dmChannelData.id);
await cacheHandlers.delete("channels", dmChannelData.id);
const channel = await structures.createChannel(dmChannelData);
// Recreate the channel and add it undert he users id
cacheHandlers.set("channels", memberID, channel);
await cacheHandlers.set("channels", memberID, channel);
dmChannel = channel;
}
@@ -240,9 +240,9 @@ export function moveMember(
/** Modifies the bot's username or avatar.
* NOTE: username: if changed may cause the bot's discriminator to be randomized.
*/
export async function editBotProfile(username?: string, avatarURL?: string) {
export async function editBotProfile(username?: string, botAvatarURL?: string) {
// Nothing was edited
if (!username && !avatarURL) return;
if (!username && !botAvatarURL) return;
// Check username requirements if username was provided
if (username) {
if (username.length > 32) {
@@ -259,8 +259,8 @@ export async function editBotProfile(username?: string, avatarURL?: string) {
}
}
const avatar = avatarURL ? await urlToBase64(avatarURL) : undefined;
RequestManager.patch(
const avatar = botAvatarURL ? await urlToBase64(botAvatarURL) : undefined;
return RequestManager.patch(
endpoints.USER_BOT,
{
username: username?.trim(),
+5 -5
View File
@@ -10,7 +10,7 @@ import { endpoints } from "../../util/constants.ts";
import { botHasChannelPermissions } from "../../util/permissions.ts";
import { delay } from "../../util/utils.ts";
import { cacheHandlers } from "../controllers/cache.ts";
import { Message, structures } from "../structures/structures.ts";
import { Message, structures } from "../structures/mod.ts";
/** Delete a message with the channel id and message id only. */
export async function deleteMessageByID(
@@ -68,7 +68,7 @@ export async function pin(channelID: string, messageID: string) {
) {
throw new Error(Errors.MISSING_MANAGE_MESSAGES);
}
RequestManager.put(endpoints.CHANNEL_MESSAGE(channelID, messageID));
return RequestManager.put(endpoints.CHANNEL_MESSAGE(channelID, messageID));
}
/** Unpin a message in a channel. Requires MANAGE_MESSAGES. */
@@ -82,7 +82,7 @@ export async function unpin(channelID: string, messageID: string) {
) {
throw new Error(Errors.MISSING_MANAGE_MESSAGES);
}
RequestManager.delete(
return RequestManager.delete(
endpoints.CHANNEL_MESSAGE(channelID, messageID),
);
}
@@ -134,8 +134,8 @@ export async function addReactions(
ordered = false,
) {
if (!ordered) {
reactions.forEach((reaction) =>
addReaction(channelID, messageID, reaction)
await Promise.all(
reactions.map((reaction) => addReaction(channelID, messageID, reaction)),
);
} else {
for (const reaction of reactions) {
+2 -2
View File
@@ -17,7 +17,7 @@ import { cache } from "../../util/cache.ts";
import { endpoints } from "../../util/constants.ts";
import { botHasChannelPermissions } from "../../util/permissions.ts";
import { urlToBase64 } from "../../util/utils.ts";
import { structures } from "../structures/structures.ts";
import { structures } from "../structures/mod.ts";
/** Create a new webhook. Requires the MANAGE_WEBHOOKS permission. Returns a webhook object on success. Webhook names follow our naming restrictions that can be found in our Usernames and Nicknames documentation, with the following additional stipulations:
*
@@ -46,7 +46,7 @@ export async function createWebhook(
throw new Error(Errors.INVALID_WEBHOOK_NAME);
}
return RequestManager.post(
return await RequestManager.post(
endpoints.CHANNEL_WEBHOOKS(channelID),
{
...options,
+1 -1
View File
@@ -62,7 +62,7 @@ export async function createChannel(
nsfw: createNewProp(data.nsfw || false),
});
cacheHandlers.set("channels", data.id, channel);
await cacheHandlers.set("channels", data.id, channel);
return channel as Channel;
}
+1
View File
@@ -127,6 +127,7 @@ export async function createMessage(data: MessageCreateOptions) {
message_reference: messageReference,
edited_timestamp: editedTimestamp,
referenced_message: referencedMessageID,
member,
...rest
} = data;
+1 -3
View File
@@ -28,7 +28,7 @@ export function createTemplate(
restProps[key] = createNewProp((rest as any)[key]);
}
const template = Object.create(baseTemplate, {
return Object.create(baseTemplate, {
...restProps,
usageCount: createNewProp(sourceGuildID),
creatorID: createNewProp(creatorID),
@@ -38,8 +38,6 @@ export function createTemplate(
serializedSourceGuild: createNewProp(serializedSourceGuild),
isDirty: createNewProp(isDirty),
});
return template;
}
export interface Template {