mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-02 04:56:07 +00:00
145 lines
4.9 KiB
TypeScript
145 lines
4.9 KiB
TypeScript
import type {
|
|
GatewayGuildAuditLogEntryCreateDispatchData,
|
|
GatewayGuildBanAddDispatchData,
|
|
GatewayGuildBanRemoveDispatchData,
|
|
GatewayGuildCreateDispatchData,
|
|
GatewayGuildDeleteDispatchData,
|
|
GatewayGuildEmojisUpdateDispatchData,
|
|
GatewayGuildIntegrationsUpdateDispatchData,
|
|
GatewayGuildMemberRemoveDispatchData,
|
|
GatewayGuildMemberUpdateDispatchData,
|
|
GatewayGuildMembersChunkDispatchData,
|
|
GatewayGuildRoleCreateDispatchData,
|
|
GatewayGuildRoleDeleteDispatchData,
|
|
GatewayGuildRoleUpdateDispatchData,
|
|
GatewayGuildScheduledEventCreateDispatchData,
|
|
GatewayGuildScheduledEventDeleteDispatchData,
|
|
GatewayGuildScheduledEventUpdateDispatchData,
|
|
GatewayGuildScheduledEventUserAddDispatchData,
|
|
GatewayGuildScheduledEventUserRemoveDispatchData,
|
|
GatewayGuildStickersUpdateDispatchData,
|
|
GatewayGuildUpdateDispatchData,
|
|
} from 'discord-api-types/v10';
|
|
import type { BaseClient } from '../../client/base';
|
|
import { toCamelCase } from '../../common';
|
|
import {
|
|
Guild,
|
|
GuildEmoji,
|
|
GuildMember,
|
|
GuildRole,
|
|
Sticker,
|
|
UnavailableMember,
|
|
User,
|
|
type GatewayGuildMemberAddDispatchDataFixed,
|
|
} from '../../structures';
|
|
|
|
export const GUILD_AUDIT_LOG_ENTRY_CREATE = (_self: BaseClient, data: GatewayGuildAuditLogEntryCreateDispatchData) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_BAN_ADD = (self: BaseClient, data: GatewayGuildBanAddDispatchData) => {
|
|
return { ...toCamelCase(data), user: new User(self, data.user) };
|
|
};
|
|
|
|
export const GUILD_BAN_REMOVE = (self: BaseClient, data: GatewayGuildBanRemoveDispatchData) => {
|
|
return { ...toCamelCase(data), user: new User(self, data.user) };
|
|
};
|
|
|
|
export const GUILD_CREATE = (self: BaseClient, data: GatewayGuildCreateDispatchData) => {
|
|
return new Guild<'create'>(self, data);
|
|
};
|
|
|
|
export const GUILD_DELETE = async (self: BaseClient, data: GatewayGuildDeleteDispatchData) => {
|
|
return (await self.cache.guilds?.get(data.id)) ?? data;
|
|
};
|
|
|
|
export const GUILD_EMOJIS_UPDATE = (self: BaseClient, data: GatewayGuildEmojisUpdateDispatchData) => {
|
|
return {
|
|
...toCamelCase(data),
|
|
emojis: data.emojis.map(x => new GuildEmoji(self, x, data.guild_id)),
|
|
};
|
|
};
|
|
|
|
export const GUILD_INTEGRATIONS_UPDATE = (_self: BaseClient, data: GatewayGuildIntegrationsUpdateDispatchData) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_MEMBER_ADD = (self: BaseClient, data: GatewayGuildMemberAddDispatchDataFixed<boolean>) => {
|
|
if (!('user' in data)) return new UnavailableMember(self, data, data.id, data.guild_id);
|
|
return new GuildMember(self, data, data.user, data.guild_id);
|
|
};
|
|
|
|
export const GUILD_MEMBER_REMOVE = (self: BaseClient, data: GatewayGuildMemberRemoveDispatchData) => {
|
|
return { ...toCamelCase(data), user: new User(self, data.user) };
|
|
};
|
|
|
|
export const GUILD_MEMBERS_CHUNK = (self: BaseClient, data: GatewayGuildMembersChunkDispatchData) => {
|
|
return {
|
|
...toCamelCase(data),
|
|
members: data.members.map(x => new GuildMember(self, x, x.user!, data.guild_id)),
|
|
};
|
|
};
|
|
|
|
export const GUILD_MEMBER_UPDATE = async (
|
|
self: BaseClient,
|
|
data: GatewayGuildMemberUpdateDispatchData,
|
|
): Promise<[member: GuildMember, old?: GuildMember]> => {
|
|
const oldData = await self.cache.members?.get(data.user.id, data.guild_id);
|
|
return [new GuildMember(self, data, data.user, data.guild_id), oldData];
|
|
};
|
|
|
|
export const GUILD_SCHEDULED_EVENT_CREATE = (_self: BaseClient, data: GatewayGuildScheduledEventCreateDispatchData) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_SCHEDULED_EVENT_UPDATE = (_self: BaseClient, data: GatewayGuildScheduledEventUpdateDispatchData) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_SCHEDULED_EVENT_DELETE = (_self: BaseClient, data: GatewayGuildScheduledEventDeleteDispatchData) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_SCHEDULED_EVENT_USER_ADD = (
|
|
_self: BaseClient,
|
|
data: GatewayGuildScheduledEventUserAddDispatchData,
|
|
) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_SCHEDULED_EVENT_USER_REMOVE = (
|
|
_self: BaseClient,
|
|
data: GatewayGuildScheduledEventUserRemoveDispatchData,
|
|
) => {
|
|
return toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_ROLE_CREATE = (self: BaseClient, data: GatewayGuildRoleCreateDispatchData) => {
|
|
return new GuildRole(self, data.role, data.guild_id);
|
|
};
|
|
|
|
export const GUILD_ROLE_DELETE = async (self: BaseClient, data: GatewayGuildRoleDeleteDispatchData) => {
|
|
return (await self.cache.roles?.get(data.role_id)) || toCamelCase(data);
|
|
};
|
|
|
|
export const GUILD_ROLE_UPDATE = async (
|
|
self: BaseClient,
|
|
data: GatewayGuildRoleUpdateDispatchData,
|
|
): Promise<[role: GuildRole, old?: GuildRole]> => {
|
|
return [new GuildRole(self, data.role, data.guild_id), await self.cache.roles?.get(data.role.id)];
|
|
};
|
|
|
|
export const GUILD_STICKERS_UPDATE = (self: BaseClient, data: GatewayGuildStickersUpdateDispatchData) => {
|
|
return {
|
|
...toCamelCase(data),
|
|
stickers: data.stickers.map(x => new Sticker(self, x)),
|
|
};
|
|
};
|
|
|
|
export const GUILD_UPDATE = async (
|
|
self: BaseClient,
|
|
data: GatewayGuildUpdateDispatchData,
|
|
): Promise<[guild: Guild, old?: Guild<'cached'>]> => {
|
|
return [new Guild(self, data), await self.cache.guilds?.get(data.id)];
|
|
};
|