Clean up imports in schemas/api/bots

This commit is contained in:
Rory&
2026-04-19 23:38:19 +02:00
parent 354f80263e
commit ae064aea1b
18 changed files with 73 additions and 76 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
export default {
"*.{j,t}s": ["eslint --concurrency 4" /* sweet spot it seems */, "prettier --write"],
"*.{j,t}s": [() => "npm run build:src:tsgo", "eslint --concurrency 4" /* sweet spot it seems */, "prettier --write"],
"src/schemas/{*,**/*}.ts": [() => "tsc -b -v", () => "node scripts/schema.js", () => "node scripts/openapi.js", () => "git add assets/schemas.json assets/openapi.json"],
};
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -17,10 +17,10 @@
*/
import { randomBytes } from "node:crypto";
import { InteractionFailureReason, InteractionSchema } from "@spacebar/schemas";
import { InteractionFailureReason, InteractionSchema, InteractionType } from "@spacebar/schemas";
import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
import { Config, emitEvent, getPermission, Guild, InteractionCreateEvent, InteractionFailureEvent, InteractionType, Member, Message, Snowflake } from "@spacebar/util";
import { Config, emitEvent, getPermission, Guild, InteractionCreateEvent, InteractionFailureEvent, Member, Message, Snowflake } from "@spacebar/util";
import { pendingInteractions } from "@spacebar/util/imports/Interactions";
import { InteractionCreateSchema } from "@spacebar/schemas/api/bots/InteractionCreateSchema";
@@ -16,9 +16,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Message } from "@spacebar/util";
import { InteractionCallbackType } from "./InteractionCallbackType";
import { AllowedMentions, BaseMessageComponents, Embed, MessageComponentType } from "../messages";
import { AllowedMentions, BaseMessageComponents, Embed } from "../messages";
import { MessageCreateAttachment, MessageCreateCloudAttachment, PollCreationSchema } from "#schemas/uncategorised";
export interface InteractionCallbackSchema {
@@ -16,8 +16,9 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { PublicMember, PublicUser, Snowflake } from "@spacebar/schemas";
import { Channel, InteractionType, Message } from "@spacebar/util";
import { PublicMember, PublicUser, Snowflake, InteractionType } from "@spacebar/schemas";
// TODO: remove entity imports
import { Channel, Message } from "@spacebar/util";
export interface InteractionCreateSchema {
version: number; // TODO: types?
+36 -2
View File
@@ -16,8 +16,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { ApplicationCommandOption, Snowflake, UploadAttachmentRequestSchema } from "@spacebar/schemas";
import { InteractionType } from "@spacebar/util";
import { AllowedMentions, ApplicationCommandOption, Embed, Snowflake, UploadAttachmentRequestSchema } from "@spacebar/schemas";
export interface InteractionSchema {
type: InteractionType;
@@ -44,3 +43,38 @@ interface InteractionData {
type: number;
version: string;
}
export interface Interaction {
id: string;
type: InteractionType;
data?: object; // TODO typing
guild_id: string;
channel_id: string;
member_id: string;
token: string;
version: number;
}
export enum InteractionType {
Ping = 1,
ApplicationCommand = 2,
MessageComponent = 3,
ApplicationCommandAutocomplete = 4,
ModalSubmit = 5,
}
export enum InteractionResponseType {
SelfCommandResponse = 0,
Pong = 1,
Acknowledge = 2,
ChannelMessage = 3,
ChannelMessageWithSource = 4,
AcknowledgeWithSource = 5,
}
export interface InteractionApplicationCommandCallbackData {
tts?: boolean;
content: string;
embeds?: Embed[];
allowed_mentions?: AllowedMentions;
}
@@ -16,7 +16,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Snowflake } from "@spacebar/util";
import { Snowflake } from "../../Identifiers";
import { ApplicationCommandOption } from "../developers";
import { ApplicationCommandType } from "./ApplicationCommandSchema";
@@ -16,7 +16,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Snowflake } from "@spacebar/util";
import { Snowflake } from "../../Identifiers";
import { MessageComponentType } from "../messages";
import { ApplicationCommandType } from "./ApplicationCommandSchema";
@@ -17,7 +17,7 @@
*/
import { UploadAttachmentRequestSchema } from "@spacebar/schemas";
import { Snowflake } from "@spacebar/util";
import { Snowflake } from "../../Identifiers";
export interface SendableModalSubmitDataSchema {
id: Snowflake;
+1
View File
@@ -15,6 +15,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export * from "./ApplicationCommandCreateSchema";
export * from "./ApplicationCommandSchema";
export * from "./InteractionSchema";
+20 -2
View File
@@ -1,6 +1,24 @@
import { Channel, Guild, Invite, Message, ReadState, Recipient, Tag, ThreadMember, User, VoiceState, Webhook } from "@spacebar/util";
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2026 Spacebar and Spacebar Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// TODO: remove entity imports
import { Channel, Recipient, Tag, ThreadMember } from "@spacebar/util";
import { HTTPError } from "lambert-server";
import { Column, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
import { Snowflake } from "../../Identifiers";
import { PartialUser, PublicMember } from "../users";
@@ -16,8 +16,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { InteractionType, Snowflake } from "@spacebar/util";
import { AllowedMentions, MessageReference, ApplicationCommandType, BaseMessageComponents, Embed, PollAnswer, PollMedia, PublicUser } from "@spacebar/schemas";
import { Snowflake } from "@spacebar/util";
import { InteractionType, AllowedMentions, MessageReference, ApplicationCommandType, BaseMessageComponents, Embed, PollAnswer, PollMedia, PublicUser } from "@spacebar/schemas";
export type MessageCreateAttachment = {
id: string;
+1 -1
View File
@@ -20,7 +20,6 @@ import { User } from "./User";
import { Member } from "./Member";
import { Role } from "./Role";
import { Channel } from "./Channel";
import { InteractionType } from "../interfaces";
import { Application } from "./Application";
import { Column, CreateDateColumn, Entity, Index, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, RelationId, FindOneOptions, Raw, Not, BaseEntity, In } from "typeorm";
import { BaseClass } from "./BaseClass";
@@ -42,6 +41,7 @@ import {
Reaction,
UnfurledMediaItem,
PartialUser,
InteractionType,
} from "@spacebar/schemas";
import { MessageFlags } from "@spacebar/util";
import { JsonRemoveEmpty } from "../util/Decorators";
+2 -2
View File
@@ -16,8 +16,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { ApplicationCommandType } from "@spacebar/schemas";
import { InteractionType, Snowflake } from "@spacebar/util";
import { ApplicationCommandType, InteractionType } from "@spacebar/schemas";
import { Snowflake } from "@spacebar/util";
interface PendingInteraction {
timeout: NodeJS.Timeout;
+1 -2
View File
@@ -18,8 +18,6 @@
import {
ConnectedAccount,
Interaction,
Message,
Invite,
Role,
Emoji,
@@ -42,6 +40,7 @@ import { JsonValue } from "@protobuf-ts/runtime";
import {
ApplicationCommand,
GuildCreateResponse,
Interaction,
InteractionFailureReason,
PartialEmoji,
PublicChannel,
-54
View File
@@ -1,54 +0,0 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Embed, AllowedMentions } from "@spacebar/schemas";
export interface Interaction {
id: string;
type: InteractionType;
data?: object; // TODO typing
guild_id: string;
channel_id: string;
member_id: string;
token: string;
version: number;
}
export enum InteractionType {
Ping = 1,
ApplicationCommand = 2,
MessageComponent = 3,
ApplicationCommandAutocomplete = 4,
ModalSubmit = 5,
}
export enum InteractionResponseType {
SelfCommandResponse = 0,
Pong = 1,
Acknowledge = 2,
ChannelMessage = 3,
ChannelMessageWithSource = 4,
AcknowledgeWithSource = 5,
}
export interface InteractionApplicationCommandCallbackData {
tts?: boolean;
content: string;
embeds?: Embed[];
allowed_mentions?: AllowedMentions;
}
-1
View File
@@ -20,6 +20,5 @@ export * from "./Activity";
export * from "./ConnectedAccount";
export * from "./Event";
export * from "./GuildWelcomeScreen";
export * from "./Interaction";
export * from "./Presence";
export * from "./Status";