feat: guild scheduled events

This commit is contained in:
Skillz4Killz
2021-11-16 21:15:05 +00:00
committed by GitHub
parent 889e9d197a
commit a1f7c47b7a
28 changed files with 724 additions and 13 deletions
@@ -0,0 +1,58 @@
import { Bot } from "../../../bot.ts";
import { DiscordenoMember, DiscordenoUser } from "../../../transformers/member.ts";
import { GetScheduledEventUsers } from "../../../types/guilds/scheduledEvents.ts";
import { GuildMember } from "../../../types/members/guildMember.ts";
import { User } from "../../../types/users/user.ts";
import { Collection } from "../../../util/collection.ts";
export async function getScheduledEventUsers(
bot: Bot,
guildId: bigint,
eventId: bigint,
options?: { withMember?: false }
): Promise<Collection<bigint, DiscordenoUser>>;
export async function getScheduledEventUsers(
bot: Bot,
guildId: bigint,
eventId: bigint,
options?: { withMember: true }
): Promise<Collection<bigint, { user: DiscordenoUser; member: DiscordenoMember }>>;
export async function getScheduledEventUsers(
bot: Bot,
guildId: bigint,
eventId: bigint,
options?: GetScheduledEventUsers
): Promise<
Collection<bigint, DiscordenoUser> | Collection<bigint, { user: DiscordenoUser; member: DiscordenoMember }>
> {
// TODO: validate limit
// TODO: is the guild member omit user
const result = await bot.rest.runMethod<(User & { member?: GuildMember })[]>(
bot.rest,
"get",
bot.constants.endpoints.GUILD_SCHEDULED_EVENT_USERS(guildId, eventId),
{
limit: options?.limit,
with_members: options?.withMember,
}
);
if (!options?.withMember) {
return new Collection(
result.map((res) => {
const user = bot.transformers.user(bot, res);
return [user.id, user];
})
);
}
return new Collection(
result.map((res) => {
const user = bot.transformers.user(bot, res);
const member = bot.transformers.member(bot, res.member!, guildId, user.id);
return [user.id, { member, user }];
})
);
}