mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-01 20:46:08 +00:00

* fix(Message): delete() params * feat: fetches guilds items * fix(types): literal types * fix
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import type { Model } from './Base.ts';
|
|
import type { Session } from '../Session.ts';
|
|
import type { Snowflake } from '../Snowflake.ts';
|
|
import type { DiscordThreadMember } from '../../discordeno/mod.ts';
|
|
import * as Routes from '../Routes.ts';
|
|
|
|
/**
|
|
* A member that comes from a thread
|
|
* @link https://discord.com/developers/docs/resources/channel#thread-member-object
|
|
* **/
|
|
export class ThreadMember implements Model {
|
|
constructor(session: Session, data: DiscordThreadMember) {
|
|
this.session = session;
|
|
this.id = data.id;
|
|
this.flags = data.flags;
|
|
this.timestamp = Date.parse(data.join_timestamp);
|
|
}
|
|
|
|
readonly session: Session;
|
|
readonly id: Snowflake;
|
|
flags: number;
|
|
timestamp: number;
|
|
|
|
get threadId(): Snowflake {
|
|
return this.id;
|
|
}
|
|
|
|
async quitThread(memberId?: Snowflake): Promise<void> {
|
|
await this.session.rest.runMethod<undefined>(
|
|
this.session.rest,
|
|
'DELETE',
|
|
Routes.THREAD_USER(this.id, memberId ?? this.session.botId),
|
|
);
|
|
}
|
|
|
|
async fetchMember(memberId?: Snowflake): Promise<ThreadMember> {
|
|
const member = await this.session.rest.runMethod<DiscordThreadMember>(
|
|
this.session.rest,
|
|
'GET',
|
|
Routes.THREAD_USER(this.id, memberId ?? this.session.botId),
|
|
);
|
|
|
|
return new ThreadMember(this.session, member);
|
|
}
|
|
}
|
|
|
|
export default ThreadMember;
|