mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-03 05:26:07 +00:00
feat: invite endpoints
This commit is contained in:
parent
8c9b667e99
commit
4f178ca962
@ -1,6 +1,7 @@
|
|||||||
import type { Snowflake } from "../util/Snowflake.ts";
|
import type { Snowflake } from "../util/Snowflake.ts";
|
||||||
import type { Session } from "../session/Session.ts";
|
import type { Session } from "../session/Session.ts";
|
||||||
import type { DiscordEmoji, DiscordGuild, DiscordRole } from "../vendor/external.ts";
|
import type { DiscordEmoji, DiscordGuild, DiscordInviteMetadata, DiscordRole } from "../vendor/external.ts";
|
||||||
|
import type { GetInvite } from "../util/Routes.ts";
|
||||||
import {
|
import {
|
||||||
DefaultMessageNotificationLevels,
|
DefaultMessageNotificationLevels,
|
||||||
ExplicitContentFilterLevels,
|
ExplicitContentFilterLevels,
|
||||||
@ -11,8 +12,8 @@ import { urlToBase64 } from "../util/urlToBase64.ts";
|
|||||||
import { Member } from "./Member.ts";
|
import { Member } from "./Member.ts";
|
||||||
import { BaseGuild } from "./BaseGuild.ts";
|
import { BaseGuild } from "./BaseGuild.ts";
|
||||||
import { Role } from "./Role.ts";
|
import { Role } from "./Role.ts";
|
||||||
import { Emoji } from "./Emoji.ts";
|
|
||||||
import { GuildEmoji } from "./GuildEmoji.ts";
|
import { GuildEmoji } from "./GuildEmoji.ts";
|
||||||
|
import { Invite } from "./Invite.ts";
|
||||||
import { Routes } from "../util/mod.ts";
|
import { Routes } from "../util/mod.ts";
|
||||||
|
|
||||||
export interface CreateRole {
|
export interface CreateRole {
|
||||||
@ -69,7 +70,7 @@ export class Guild extends BaseGuild {
|
|||||||
roles: Role[];
|
roles: Role[];
|
||||||
emojis: GuildEmoji[];
|
emojis: GuildEmoji[];
|
||||||
|
|
||||||
async createEmoji(options: CreateGuildEmoji) {
|
async createEmoji(options: CreateGuildEmoji): Promise<GuildEmoji> {
|
||||||
if (options.image && !options.image.startsWith("data:image/")) {
|
if (options.image && !options.image.startsWith("data:image/")) {
|
||||||
options.image = await urlToBase64(options.image);
|
options.image = await urlToBase64(options.image);
|
||||||
}
|
}
|
||||||
@ -81,10 +82,10 @@ export class Guild extends BaseGuild {
|
|||||||
options,
|
options,
|
||||||
);
|
);
|
||||||
|
|
||||||
return new Emoji(this.session, emoji);
|
return new GuildEmoji(this.session, emoji, this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteEmoji(id: Snowflake, { reason }: { reason?: string } = {}) {
|
async deleteEmoji(id: Snowflake, { reason }: { reason?: string } = {}): Promise<void> {
|
||||||
await this.session.rest.runMethod<undefined>(
|
await this.session.rest.runMethod<undefined>(
|
||||||
this.session.rest,
|
this.session.rest,
|
||||||
"DELETE",
|
"DELETE",
|
||||||
@ -93,7 +94,7 @@ export class Guild extends BaseGuild {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async editEmoji(id: Snowflake, options: ModifyGuildEmoji) {
|
async editEmoji(id: Snowflake, options: ModifyGuildEmoji): Promise<GuildEmoji> {
|
||||||
const emoji = await this.session.rest.runMethod<DiscordEmoji>(
|
const emoji = await this.session.rest.runMethod<DiscordEmoji>(
|
||||||
this.session.rest,
|
this.session.rest,
|
||||||
"PATCH",
|
"PATCH",
|
||||||
@ -104,7 +105,7 @@ export class Guild extends BaseGuild {
|
|||||||
return new GuildEmoji(this.session, emoji, this.id);
|
return new GuildEmoji(this.session, emoji, this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createRole(options: CreateRole) {
|
async createRole(options: CreateRole): Promise<Role> {
|
||||||
let icon: string | undefined;
|
let icon: string | undefined;
|
||||||
|
|
||||||
if (options.iconHash) {
|
if (options.iconHash) {
|
||||||
@ -135,6 +136,28 @@ export class Guild extends BaseGuild {
|
|||||||
async deleteRole(roleId: Snowflake): Promise<void> {
|
async deleteRole(roleId: Snowflake): Promise<void> {
|
||||||
await this.session.rest.runMethod<undefined>(this.session.rest, "DELETE", Routes.GUILD_ROLE(this.id, roleId));
|
await this.session.rest.runMethod<undefined>(this.session.rest, "DELETE", Routes.GUILD_ROLE(this.id, roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: edit role
|
||||||
|
|
||||||
|
|
||||||
|
async deleteInvite(inviteCode: string): Promise<void> {
|
||||||
|
await this.session.rest.runMethod<undefined>(
|
||||||
|
this.session.rest,
|
||||||
|
"DELETE",
|
||||||
|
Routes.INVITE(inviteCode),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async fetchInvite(inviteCode: string, options: GetInvite): Promise<Invite> {
|
||||||
|
const inviteMetadata = await this.session.rest.runMethod<DiscordInviteMetadata>(
|
||||||
|
this.session.rest,
|
||||||
|
"GET",
|
||||||
|
Routes.INVITE(inviteCode, options),
|
||||||
|
);
|
||||||
|
|
||||||
|
return new Invite(this.session, inviteMetadata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Guild;
|
export default Guild;
|
||||||
|
@ -117,3 +117,21 @@ export function GUILD_EMOJIS(guildId: Snowflake) {
|
|||||||
export function GUILD_EMOJI(guildId: Snowflake, emojiId: Snowflake) {
|
export function GUILD_EMOJI(guildId: Snowflake, emojiId: Snowflake) {
|
||||||
return `/guilds/${guildId}/emojis/${emojiId}`;
|
return `/guilds/${guildId}/emojis/${emojiId}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface GetInvite {
|
||||||
|
withCounts?: boolean;
|
||||||
|
withExpiration?: boolean;
|
||||||
|
scheduledEventId?: Snowflake;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function INVITE(inviteCode: string, options?: GetInvite) {
|
||||||
|
let url = `/invites/${inviteCode}?`;
|
||||||
|
|
||||||
|
if (options) {
|
||||||
|
if (options.withCounts) url += `with_counts=${options.withCounts}`;
|
||||||
|
if (options.withExpiration) url += `&with_expiration=${options.withExpiration}`;
|
||||||
|
if (options.scheduledEventId) url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user