Merge remote-tracking branch 'origin/fp-attempt-9001' into fp-attempt-9001

This commit is contained in:
TriForMine
2021-10-18 21:04:59 +02:00
13 changed files with 78 additions and 42 deletions

View File

@@ -12,7 +12,7 @@ import {
highestRole,
higherRolePosition,
requireBotChannelPermissions,
requireBotGuildPermissions
requireBotGuildPermissions,
} from "./util/permissions.ts";
import { getGatewayBot } from "./helpers/misc/get_gateway_bot.ts";
import {

View File

@@ -1,8 +1,12 @@
import {Bot} from "../../bot.ts";
import { Bot } from "../../bot.ts";
/** Delete the attached integration object for the guild with this id. Requires MANAGE_GUILD permission. */
export async function deleteIntegration(bot: Bot, guildId: bigint, id: bigint) {
await bot.utils.requireBotGuildPermissions(bot, guildId, ["MANAGE_GUILD"]);
return await bot.rest.runMethod<undefined>(bot.rest,"delete", bot.constants.endpoints.GUILD_INTEGRATION(guildId, id));
return await bot.rest.runMethod<undefined>(
bot.rest,
"delete",
bot.constants.endpoints.GUILD_INTEGRATION(guildId, id)
);
}

View File

@@ -2,7 +2,7 @@ import type { CreateChannelInvite } from "../../types/invites/create_channel_inv
import type { InviteMetadata } from "../../types/invites/invite_metadata.ts";
import { Errors } from "../../types/discordeno/errors.ts";
import { Bot } from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Creates a new invite for this channel. Requires CREATE_INSTANT_INVITE */
export async function createInvite(bot: Bot, channelId: bigint, options: CreateChannelInvite = {}) {
@@ -15,13 +15,18 @@ export async function createInvite(bot: Bot, channelId: bigint, options: CreateC
throw new Error(Errors.INVITE_MAX_USES_INVALID);
}
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>(bot.rest,"post", bot.constants.endpoints.CHANNEL_INVITES(channelId), {
max_age: options.maxAge,
max_uses: options.maxUses,
temporary: options.temporary,
unique: options.unique,
target_type: options.targetType,
target_user_id: options.targetUserId,
target_application_id: options.targetUserId,
});
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>(
bot.rest,
"post",
bot.constants.endpoints.CHANNEL_INVITES(channelId),
{
max_age: options.maxAge,
max_uses: options.maxUses,
temporary: options.temporary,
unique: options.unique,
target_type: options.targetType,
target_user_id: options.targetUserId,
target_application_id: options.targetUserId,
}
);
}

View File

@@ -1,6 +1,6 @@
import type { InviteMetadata } from "../../types/invites/invite_metadata.ts";
import {Bot} from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Deletes an invite for the given code. Requires `MANAGE_CHANNELS` or `MANAGE_GUILD` permission */
export async function deleteInvite(bot: Bot, channelId: bigint, inviteCode: string) {
@@ -13,5 +13,9 @@ export async function deleteInvite(bot: Bot, channelId: bigint, inviteCode: stri
}
}
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>(bot.rest,"delete", bot.constants.endpoints.INVITE(inviteCode));
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>(
bot.rest,
"delete",
bot.constants.endpoints.INVITE(inviteCode)
);
}

View File

@@ -1,13 +1,17 @@
import type { InviteMetadata } from "../../types/invites/invite_metadata.ts";
import { Collection } from "../../util/collection.ts";
import {Bot} from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Gets the invites for this channel. Requires MANAGE_CHANNEL */
export async function getChannelInvites(bot: Bot, channelId: bigint) {
await bot.utils.requireBotChannelPermissions(channelId, ["MANAGE_CHANNELS"]);
const result = await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>[]>(bot.rest,"get", bot.constants.endpoints.CHANNEL_INVITES(channelId));
const result = await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>[]>(
bot.rest,
"get",
bot.constants.endpoints.CHANNEL_INVITES(channelId)
);
return new Collection(result.map((invite) => [invite.code, invite]));
}

View File

@@ -1,12 +1,16 @@
import { GetInvite } from "../../types/invites/get_invite.ts";
import type { InviteMetadata } from "../../types/invites/invite_metadata.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import {Bot} from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
import { Bot } from "../../bot.ts";
/** Returns an invite for the given code or throws an error if the invite doesn't exists. */
export async function getInvite(bot: Bot, inviteCode: string, options?: GetInvite) {
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>("get", bot.constants.endpoints.INVITE(inviteCode), {
with_counts: options.withCounts,
with_expiration: options.withExpiration,
});
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>>(
"get",
bot.constants.endpoints.INVITE(inviteCode),
{
with_counts: options.withCounts,
with_expiration: options.withExpiration,
}
);
}

View File

@@ -1,13 +1,16 @@
import type { InviteMetadata } from "../../types/invites/invite_metadata.ts";
import { Collection } from "../../util/collection.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import {Bot} from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
import { Bot } from "../../bot.ts";
/** Get all the invites for this guild. Requires MANAGE_GUILD permission */
export async function getInvites(bot: Bot, guildId: bigint) {
await bot.utils.requireBotGuildPermissions(guildId, ["MANAGE_GUILD"]);
const result = await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>[]>("get", bot.constants.endpoints.GUILD_INVITES(guildId));
const result = await bot.rest.runMethod<SnakeCasedPropertiesDeep<InviteMetadata>[]>(
"get",
bot.constants.endpoints.GUILD_INVITES(guildId)
);
return new Collection(result.map((invite) => [invite.code, invite]));
}

View File

@@ -1,7 +1,7 @@
import { Errors } from "../../types/discordeno/errors.ts";
import type { User } from "../../types/users/user.ts";
import {Bot} from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Modifies the bot's username or avatar.
* NOTE: username: if changed may cause the bot's discriminator to be randomized.
@@ -27,7 +27,7 @@ export async function editBotProfile(bot: Bot, options: { username?: string; bot
const avatar = options?.botAvatarURL ? await bot.utils.urlToBase64(options?.botAvatarURL) : options?.botAvatarURL;
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<User>>(bot,"patch", bot.constants.endpoints.USER_BOT, {
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<User>>(bot, "patch", bot.constants.endpoints.USER_BOT, {
username: options.username?.trim(),
avatar,
});

View File

@@ -1,4 +1,4 @@
import {Bot} from "../../bot.ts";
import { Bot } from "../../bot.ts";
import { DiscordGatewayOpcodes } from "../../types/codes/gateway_opcodes.ts";
import type { StatusUpdate } from "../../types/gateway/status_update.ts";
@@ -12,7 +12,7 @@ export function editBotStatus(bot: Bot, data: Omit<StatusUpdate, "afk" | "since"
since: null,
afk: false,
activities: data.activities,
status: data.status
status: data.status,
},
});
});

View File

@@ -1,8 +1,12 @@
import type { GetGatewayBot } from "../../types/gateway/get_gateway_bot.ts";
import {Bot} from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Get the bots Gateway metadata that can help during the operation of large or sharded bots. */
export async function getGatewayBot(bot: Bot) {
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<GetGatewayBot>>(bot.rest,"get", bot.constants.endpoints.GATEWAY_BOT);
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<GetGatewayBot>>(
bot.rest,
"get",
bot.constants.endpoints.GATEWAY_BOT
);
}

View File

@@ -1,8 +1,12 @@
import type { User } from "../../types/users/user.ts";
import {Bot} from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** This function will return the raw user payload in the rare cases you need to fetch a user directly from the API. */
export async function getUser(bot: Bot, userId: bigint) {
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<User>>(bot.rest,"get", bot.constants.endpoints.USER(userId));
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<User>>(
bot.rest,
"get",
bot.constants.endpoints.USER(userId)
);
}

View File

@@ -1,8 +1,12 @@
import { Application } from "../../types/applications/application.ts";
import { Bot } from "../../bot.ts";
import {SnakeCasedPropertiesDeep} from "../../types/util.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
/** Get the applications info */
export async function getApplicationInfo(bot: Bot) {
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<Omit<Application, "flags">>>(bot.rest,"get", bot.constants.endpoints.OAUTH2_APPLICATION);
return await bot.rest.runMethod<SnakeCasedPropertiesDeep<Omit<Application, "flags">>>(
bot.rest,
"get",
bot.constants.endpoints.OAUTH2_APPLICATION
);
}

View File

@@ -1,6 +1,6 @@
import type { UpdateVoiceState } from "../../types/voice/update_voice_state.ts";
import type { AtLeastOne } from "../../types/util.ts";
import {Bot} from "../../bot.ts";
import { Bot } from "../../bot.ts";
/** Connect or join a voice channel inside a guild. By default, the "selfDeaf" option is true. Requires `CONNECT` and `VIEW_CHANNEL` permissions. */
export async function connectToVoiceChannel(