mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-03 09:20:08 +00:00
feat: reverse transformers (#2305)
* feat: reverse transformer
* fix: cap
* deno fmt
* refactor: change to use toggles list
* Revert "refactor: change to use toggles list"
This reverts commit 31f170f31b.
* fix: forget reverse transformer
This commit is contained in:
14
bot.ts
14
bot.ts
@@ -138,6 +138,10 @@ import {
|
||||
} from "./transformers/applicationCommandOptionChoice.ts";
|
||||
import { transformEmbedToDiscordEmbed } from "./transformers/reverse/embed.ts";
|
||||
import { transformComponentToDiscordComponent } from "./transformers/reverse/component.ts";
|
||||
import { transformActivityToDiscordActivity } from "./transformers/reverse/activity.ts";
|
||||
import { transformTeamToDiscordTeam } from "./transformers/reverse/team.ts";
|
||||
import { transformMemberToDiscordMember, transformUserToDiscordUser } from "./transformers/reverse/member.ts";
|
||||
import { transformApplicationToDiscordApplication } from "./transformers/reverse/application.ts";
|
||||
import { getBotIdFromToken, removeTokenPrefix } from "./util/token.ts";
|
||||
import { CreateShardManager } from "./gateway/manager/shardManager.ts";
|
||||
import { AutoModerationRule, transformAutoModerationRule } from "./transformers/automodRule.ts";
|
||||
@@ -396,6 +400,11 @@ export interface Transformers {
|
||||
reverse: {
|
||||
embed: (bot: Bot, payload: Embed) => DiscordEmbed;
|
||||
component: (bot: Bot, payload: Component) => DiscordComponent;
|
||||
activity: (bot: Bot, payload: Activity) => DiscordActivity;
|
||||
member: (bot: Bot, payload: Member) => DiscordMember;
|
||||
user: (bot: Bot, payload: User) => DiscordUser;
|
||||
team: (bot: Bot, payload: Team) => DiscordTeam;
|
||||
application: (bot: Bot, payload: Application) => DiscordApplication;
|
||||
};
|
||||
snowflake: (snowflake: string) => bigint;
|
||||
gatewayBot: (payload: DiscordGetGatewayBot) => GetGatewayBot;
|
||||
@@ -449,6 +458,11 @@ export function createTransformers(options: Partial<Transformers>) {
|
||||
reverse: {
|
||||
embed: options.reverse?.embed || transformEmbedToDiscordEmbed,
|
||||
component: options.reverse?.component || transformComponentToDiscordComponent,
|
||||
activity: options.reverse?.activity || transformActivityToDiscordActivity,
|
||||
member: options.reverse?.member || transformMemberToDiscordMember,
|
||||
user: options.reverse?.user || transformUserToDiscordUser,
|
||||
team: options.reverse?.team || transformTeamToDiscordTeam,
|
||||
application: options.reverse?.application || transformApplicationToDiscordApplication,
|
||||
},
|
||||
automodRule: options.automodRule || transformAutoModerationRule,
|
||||
automodActionExecution: options.automodActionExecution || transformAutoModerationActionExecution,
|
||||
|
||||
@@ -32,3 +32,5 @@ export * from "./webhook.ts";
|
||||
export * from "./welcomeScreen.ts";
|
||||
export * from "./widget.ts";
|
||||
export * from "./widgetSettings.ts";
|
||||
|
||||
export * from "./reverse/mod.ts";
|
||||
|
||||
46
transformers/reverse/activity.ts
Normal file
46
transformers/reverse/activity.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { Bot } from "../../bot.ts";
|
||||
import { DiscordActivity } from "../../types/discord.ts";
|
||||
import { Activity } from "../activity.ts";
|
||||
|
||||
export function transformActivityToDiscordActivity(bot: Bot, payload: Activity): DiscordActivity {
|
||||
return {
|
||||
name: payload.name,
|
||||
type: payload.type,
|
||||
url: payload.url ?? undefined,
|
||||
created_at: payload.createdAt,
|
||||
timestamps: {
|
||||
start: payload.startedAt,
|
||||
end: payload.endedAt,
|
||||
},
|
||||
application_id: payload.applicationId ? bot.utils.bigintToSnowflake(payload.applicationId) : undefined,
|
||||
details: payload.details ?? undefined,
|
||||
state: payload.state ?? undefined,
|
||||
emoji: payload.emoji
|
||||
? {
|
||||
name: payload.emoji.name,
|
||||
animated: payload.emoji.animated,
|
||||
id: payload.emoji.id ? bot.utils.bigintToSnowflake(payload.emoji.id) : undefined,
|
||||
}
|
||||
: undefined,
|
||||
party: {
|
||||
id: payload.partyId,
|
||||
size: payload.partyCurrentSize && payload.partyMaxSize
|
||||
? [payload.partyCurrentSize, payload.partyMaxSize]
|
||||
: undefined,
|
||||
},
|
||||
assets: {
|
||||
large_image: payload.largeImage,
|
||||
large_text: payload.largeText,
|
||||
small_image: payload.largeImage,
|
||||
small_text: payload.largeText,
|
||||
},
|
||||
secrets: {
|
||||
join: payload.join,
|
||||
spectate: payload.spectate,
|
||||
match: payload.match,
|
||||
},
|
||||
instance: payload.instance,
|
||||
flags: payload.flags,
|
||||
buttons: payload.buttons,
|
||||
};
|
||||
}
|
||||
26
transformers/reverse/application.ts
Normal file
26
transformers/reverse/application.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { Bot } from "../../bot.ts";
|
||||
import { DiscordApplication } from "../../types/discord.ts";
|
||||
import { Application } from "../application.ts";
|
||||
|
||||
export function transformApplicationToDiscordApplication(bot: Bot, payload: Application): DiscordApplication {
|
||||
return {
|
||||
name: payload.name,
|
||||
description: payload.description,
|
||||
rpc_origins: payload.rpcOrigins,
|
||||
bot_public: payload.botPublic,
|
||||
bot_require_code_grant: payload.botRequireCodeGrant,
|
||||
terms_of_service_url: payload.termsOfServiceUrl,
|
||||
privacy_policy_url: payload.privacyPolicyUrl,
|
||||
verify_key: payload.verifyKey,
|
||||
primary_sku_id: payload.primarySkuId,
|
||||
slug: payload.slug,
|
||||
cover_image: payload.coverImage ? bot.utils.iconBigintToHash(payload.coverImage) : undefined,
|
||||
flags: payload.flags,
|
||||
|
||||
id: bot.utils.bigintToSnowflake(payload.id),
|
||||
icon: payload.icon ? bot.utils.iconBigintToHash(payload.icon) : null,
|
||||
owner: payload.owner ? bot.transformers.reverse.user(bot, payload.owner) : undefined,
|
||||
team: payload.team ? bot.transformers.reverse.team(bot, payload.team) : null,
|
||||
guild_id: payload.guildId ? bot.utils.bigintToSnowflake(payload.guildId) : undefined,
|
||||
};
|
||||
}
|
||||
38
transformers/reverse/member.ts
Normal file
38
transformers/reverse/member.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { Bot } from "../../bot.ts";
|
||||
import { DiscordMember, DiscordUser } from "../../types/discord.ts";
|
||||
import { Member, User } from "../member.ts";
|
||||
|
||||
export function transformUserToDiscordUser(bot: Bot, payload: User): DiscordUser {
|
||||
return {
|
||||
id: bot.utils.bigintToSnowflake(payload.id),
|
||||
username: payload.username,
|
||||
discriminator: payload.discriminator,
|
||||
avatar: payload.avatar ? bot.utils.iconBigintToHash(payload.avatar) : null,
|
||||
locale: payload.locale,
|
||||
email: payload.email ?? undefined,
|
||||
flags: payload.flags,
|
||||
premium_type: payload.premiumType,
|
||||
public_flags: payload.publicFlags,
|
||||
bot: payload.toggles.bot,
|
||||
system: payload.toggles.system,
|
||||
mfa_enabled: payload.toggles.mfaEnabled,
|
||||
verified: payload.toggles.verified,
|
||||
};
|
||||
}
|
||||
|
||||
export function transformMemberToDiscordMember(bot: Bot, payload: Member): DiscordMember {
|
||||
return {
|
||||
nick: payload.nick ?? undefined,
|
||||
roles: payload.roles.map((id) => bot.utils.bigintToSnowflake(id)),
|
||||
joined_at: new Date(payload.joinedAt).toISOString(),
|
||||
premium_since: payload.premiumSince ? new Date(payload.premiumSince).toISOString() : undefined,
|
||||
avatar: payload.avatar ? bot.utils.iconBigintToHash(payload.avatar) : undefined,
|
||||
permissions: payload.permissions ? bot.utils.bigintToSnowflake(payload.permissions) : undefined,
|
||||
communication_disabled_until: payload.communicationDisabledUntil
|
||||
? new Date(payload.communicationDisabledUntil).toISOString()
|
||||
: undefined,
|
||||
deaf: payload.toggles.deaf,
|
||||
mute: payload.toggles.mute,
|
||||
pending: payload.toggles.pending,
|
||||
};
|
||||
}
|
||||
6
transformers/reverse/mod.ts
Normal file
6
transformers/reverse/mod.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * from "./activity.ts";
|
||||
export * from "./application.ts";
|
||||
export * from "./component.ts";
|
||||
export * from "./embed.ts";
|
||||
export * from "./member.ts";
|
||||
export * from "./team.ts";
|
||||
21
transformers/reverse/team.ts
Normal file
21
transformers/reverse/team.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { Bot } from "../../bot.ts";
|
||||
import { DiscordTeam } from "../../types/discord.ts";
|
||||
import { Team } from "../team.ts";
|
||||
|
||||
export function transformTeamToDiscordTeam(bot: Bot, payload: Team): DiscordTeam {
|
||||
const id = bot.utils.bigintToSnowflake(payload.id);
|
||||
|
||||
return {
|
||||
name: payload.name,
|
||||
|
||||
id,
|
||||
icon: payload.icon ? bot.utils.iconBigintToHash(payload.icon) : null,
|
||||
owner_user_id: bot.utils.bigintToSnowflake(payload.ownerUserId),
|
||||
members: payload.members.map((member) => ({
|
||||
membership_state: member.membershipState,
|
||||
permissions: member.permissions,
|
||||
team_id: id,
|
||||
user: bot.transformers.reverse.user(bot, member.user),
|
||||
})),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user