mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-05 10:22:31 +01:00
Merge branch 'master' into fix/messages-before-param
This commit is contained in:
commit
bc3a3add2d
1011
assets/openapi.json
1011
assets/openapi.json
File diff suppressed because it is too large
Load Diff
106387
assets/schemas.json
106387
assets/schemas.json
File diff suppressed because it is too large
Load Diff
@ -27,6 +27,7 @@ import {
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { Config } from "@spacebar/util";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@ -52,7 +53,8 @@ router.post(
|
||||
|
||||
const userIds: Array<string> = req.body.user_ids;
|
||||
if (!userIds) throw new HTTPError("The user_ids array is missing", 400);
|
||||
if (userIds.length > 200)
|
||||
|
||||
if (userIds.length > Config.get().limits.guild.maxBulkBanUsers)
|
||||
throw new HTTPError(
|
||||
"The user_ids array must be between 1 and 200 in length",
|
||||
400,
|
||||
|
@ -120,7 +120,7 @@ router.patch(
|
||||
if (!body.password)
|
||||
throw FieldErrors({
|
||||
password: {
|
||||
message: req.t("auth:register.INVALID_PASSWORD"),
|
||||
message: req.t("auth:login.INVALID_PASSWORD"),
|
||||
code: "INVALID_PASSWORD",
|
||||
},
|
||||
});
|
||||
@ -160,6 +160,15 @@ router.patch(
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (!body.password) {
|
||||
throw FieldErrors({
|
||||
password: {
|
||||
message: req.t("auth:login.INVALID_PASSWORD"),
|
||||
code: "INVALID_PASSWORD",
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (body.discriminator) {
|
||||
|
@ -21,5 +21,6 @@ export class GuildLimits {
|
||||
maxEmojis: number = 2000;
|
||||
maxMembers: number = 25000000;
|
||||
maxChannels: number = 65535;
|
||||
maxBulkBanUsers: number = 200;
|
||||
maxChannelsInCategory: number = 65535;
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ export class Message extends BaseClass {
|
||||
};
|
||||
|
||||
@Column({ type: "simple-json", nullable: true })
|
||||
components?: MessageComponent[];
|
||||
components?: ActionRowComponent[];
|
||||
|
||||
@Column({ type: "simple-json", nullable: true })
|
||||
poll?: Poll;
|
||||
@ -248,21 +248,100 @@ export class Message extends BaseClass {
|
||||
}
|
||||
|
||||
export interface MessageComponent {
|
||||
type: number;
|
||||
style?: number;
|
||||
type: MessageComponentType;
|
||||
}
|
||||
|
||||
export interface ActionRowComponent extends MessageComponent {
|
||||
type: MessageComponentType.ActionRow;
|
||||
components: (
|
||||
| ButtonComponent
|
||||
| StringSelectMenuComponent
|
||||
| SelectMenuComponent
|
||||
| TextInputComponent
|
||||
)[];
|
||||
}
|
||||
|
||||
export interface ButtonComponent extends MessageComponent {
|
||||
type: MessageComponentType.Button;
|
||||
style: ButtonStyle;
|
||||
label?: string;
|
||||
emoji?: PartialEmoji;
|
||||
custom_id?: string;
|
||||
sku_id?: string;
|
||||
url?: string;
|
||||
disabled?: boolean;
|
||||
components: MessageComponent[];
|
||||
}
|
||||
|
||||
export enum ButtonStyle {
|
||||
Primary = 1,
|
||||
Secondary = 2,
|
||||
Success = 3,
|
||||
Danger = 4,
|
||||
Link = 5,
|
||||
Premium = 6,
|
||||
}
|
||||
|
||||
export interface SelectMenuComponent extends MessageComponent {
|
||||
type:
|
||||
| MessageComponentType.StringSelect
|
||||
| MessageComponentType.UserSelect
|
||||
| MessageComponentType.RoleSelect
|
||||
| MessageComponentType.MentionableSelect
|
||||
| MessageComponentType.ChannelSelect;
|
||||
custom_id: string;
|
||||
channel_types?: number[];
|
||||
placeholder?: string;
|
||||
default_values?: SelectMenuDefaultOption[]; // only for non-string selects
|
||||
min_values?: number;
|
||||
max_values?: number;
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
export interface SelectMenuOption {
|
||||
label: string;
|
||||
value: string;
|
||||
description?: string;
|
||||
emoji?: PartialEmoji;
|
||||
default?: boolean;
|
||||
}
|
||||
|
||||
export interface SelectMenuDefaultOption {
|
||||
id: string;
|
||||
type: "user" | "role" | "channel";
|
||||
}
|
||||
|
||||
export interface StringSelectMenuComponent extends SelectMenuComponent {
|
||||
type: MessageComponentType.StringSelect;
|
||||
options: SelectMenuOption[];
|
||||
}
|
||||
|
||||
export interface TextInputComponent extends MessageComponent {
|
||||
type: MessageComponentType.TextInput;
|
||||
custom_id: string;
|
||||
style: TextInputStyle;
|
||||
label: string;
|
||||
min_length?: number;
|
||||
max_length?: number;
|
||||
required?: boolean;
|
||||
value?: string;
|
||||
placeholder?: string;
|
||||
}
|
||||
|
||||
export enum TextInputStyle {
|
||||
Short = 1,
|
||||
Paragraph = 2,
|
||||
}
|
||||
|
||||
export enum MessageComponentType {
|
||||
Script = 0, // self command script
|
||||
ActionRow = 1,
|
||||
Button = 2,
|
||||
StringSelect = 3,
|
||||
TextInput = 4,
|
||||
UserSelect = 5,
|
||||
RoleSelect = 6,
|
||||
MentionableSelect = 7,
|
||||
ChannelSelect = 8,
|
||||
}
|
||||
|
||||
export interface Embed {
|
||||
|
@ -16,7 +16,12 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Embed, MessageComponent, PollAnswer, PollMedia } from "@spacebar/util";
|
||||
import {
|
||||
ActionRowComponent,
|
||||
Embed,
|
||||
PollAnswer,
|
||||
PollMedia,
|
||||
} from "@spacebar/util";
|
||||
|
||||
type Attachment = {
|
||||
id: string;
|
||||
@ -54,7 +59,7 @@ export interface MessageCreateSchema {
|
||||
**/
|
||||
attachments?: Attachment[];
|
||||
sticker_ids?: string[];
|
||||
components?: MessageComponent[];
|
||||
components?: ActionRowComponent[];
|
||||
// TODO: Fix TypeScript errors in src\api\util\handlers\Message.ts once this is enabled
|
||||
poll?: PollCreationSchema;
|
||||
enforce_nonce?: boolean; // For Discord compatibility, it's the default behavior here
|
||||
|
@ -17,9 +17,9 @@
|
||||
*/
|
||||
|
||||
import {
|
||||
ActionRowComponent,
|
||||
Attachment,
|
||||
Embed,
|
||||
MessageComponent,
|
||||
MessageType,
|
||||
Poll,
|
||||
PublicUser,
|
||||
@ -42,7 +42,7 @@ export interface GuildMessagesSearchMessage {
|
||||
timestamp: string;
|
||||
edited_timestamp: string | null;
|
||||
flags: number;
|
||||
components: MessageComponent[];
|
||||
components: ActionRowComponent[];
|
||||
poll: Poll;
|
||||
hit: true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user