diff options
author | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-03-31 21:48:14 +1100 |
---|---|---|
committer | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-03-31 21:48:14 +1100 |
commit | 18467b6c0d1f5ffa529ab4c3e49eb3a72e0f6322 (patch) | |
tree | a7fd86af541c5edc3814e6eb5f8524948b38acc3 /util | |
parent | changes from yonks ago that I forgot to commit (diff) | |
parent | Make member.premium_since ISO8601 timestamp (diff) | |
download | server-18467b6c0d1f5ffa529ab4c3e49eb3a72e0f6322.tar.xz |
Merge branch 'master' into maddyrtc
Diffstat (limited to 'util')
-rw-r--r-- | util/src/entities/Channel.ts | 31 | ||||
-rw-r--r-- | util/src/entities/ConnectedAccount.ts | 4 | ||||
-rw-r--r-- | util/src/entities/Member.ts | 6 | ||||
-rw-r--r-- | util/src/interfaces/Interaction.ts | 2 | ||||
-rw-r--r-- | util/src/util/Rights.ts | 2 |
5 files changed, 28 insertions, 17 deletions
diff --git a/util/src/entities/Channel.ts b/util/src/entities/Channel.ts index 1cc4a538..08be1e02 100644 --- a/util/src/entities/Channel.ts +++ b/util/src/entities/Channel.ts @@ -14,12 +14,12 @@ import { Webhook } from "./Webhook"; import { DmChannelDTO } from "../dtos"; export enum ChannelType { - GUILD_TEXT = 0, // a text channel within a server + GUILD_TEXT = 0, // a text channel within a guild DM = 1, // a direct message between users - GUILD_VOICE = 2, // a voice channel within a server + GUILD_VOICE = 2, // a voice channel within a guild GROUP_DM = 3, // a direct message between multiple users - GUILD_CATEGORY = 4, // an organizational category that contains up to 50 channels - GUILD_NEWS = 5, // a channel that users can follow and crosspost into their own server + GUILD_CATEGORY = 4, // an organizational category that contains zero or more channels + GUILD_NEWS = 5, // a channel that users can follow and crosspost into a guild or route GUILD_STORE = 6, // a channel in which game developers can sell their game on Discord ENCRYPTED = 7, // end-to-end encrypted channel ENCRYPTED_THREAD = 8, // end-to-end encrypted thread channel @@ -72,7 +72,7 @@ export class Channel extends BaseClass { @ManyToOne(() => Channel) parent?: Channel; - // only for group dms + // for group DMs and owned custom channel types @Column({ nullable: true }) @RelationId((channel: Channel) => channel.owner) owner_id: string; @@ -117,6 +117,9 @@ export class Channel extends BaseClass { }) invites?: Invite[]; + @Column({ nullable: true }) + retention_policy_id?: string; + @OneToMany(() => Message, (message: Message) => message.channel, { cascade: true, orphanedRowAction: "delete", @@ -140,7 +143,7 @@ export class Channel extends BaseClass { orphanedRowAction: "delete", }) webhooks?: Webhook[]; - + // TODO: DM channel static async createChannel( channel: Partial<Channel>, @@ -182,6 +185,7 @@ export class Channel extends BaseClass { switch (channel.type) { case ChannelType.GUILD_TEXT: + case ChannelType.GUILD_NEWS: case ChannelType.GUILD_VOICE: if (channel.parent_id && !opts?.skipExistsCheck) { const exists = await Channel.findOneOrFail({ id: channel.parent_id }); @@ -191,25 +195,24 @@ export class Channel extends BaseClass { } break; case ChannelType.GUILD_CATEGORY: + case ChannelType.UNHANDLED: break; case ChannelType.DM: case ChannelType.GROUP_DM: throw new HTTPError("You can't create a dm channel in a guild"); - // TODO: check if guild is community server case ChannelType.GUILD_STORE: - case ChannelType.GUILD_NEWS: default: throw new HTTPError("Not yet supported"); } if (!channel.permission_overwrites) channel.permission_overwrites = []; - // TODO: auto generate position + // TODO: eagerly auto generate position of all guild channels channel = { ...channel, ...(!opts?.keepId && { id: Snowflake.generate() }), created_at: new Date(), - position: channel.position || 0, + position: (channel.type === ChannelType.UNHANDLED ? 0 : channel.position) || 0, }; await Promise.all([ @@ -231,11 +234,13 @@ export class Channel extends BaseClass { const otherRecipientsUsers = await User.find({ where: recipients.map((x) => ({ id: x })) }); // TODO: check config for max number of recipients + /** if you want to disallow note to self channels, uncomment the conditional below if (otherRecipientsUsers.length !== recipients.length) { throw new HTTPError("Recipient/s not found"); } + **/ - const type = recipients.length === 1 ? ChannelType.DM : ChannelType.GROUP_DM; + const type = recipients.length > 1 ? ChannelType.DM : ChannelType.GROUP_DM; let channel = null; @@ -288,7 +293,8 @@ export class Channel extends BaseClass { await emitEvent({ event: "CHANNEL_CREATE", data: channel_dto, user_id: creator_user_id }); } - return channel_dto.excludedRecipients([creator_user_id]); + if (recipients.length === 1) return channel_dto; + else return channel_dto.excludedRecipients([creator_user_id]); } static async removeRecipientFromChannel(channel: Channel, user_id: string) { @@ -354,4 +360,5 @@ export interface ChannelPermissionOverwrite { export enum ChannelPermissionOverwriteType { role = 0, member = 1, + group = 2, } diff --git a/util/src/entities/ConnectedAccount.ts b/util/src/entities/ConnectedAccount.ts index b8aa2889..09ae30ab 100644 --- a/util/src/entities/ConnectedAccount.ts +++ b/util/src/entities/ConnectedAccount.ts @@ -2,7 +2,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; -export interface PublicConnectedAccount extends Pick<ConnectedAccount, "name" | "type" | "verifie"> {} +export interface PublicConnectedAccount extends Pick<ConnectedAccount, "name" | "type" | "verified"> {} @Entity("connected_accounts") export class ConnectedAccount extends BaseClass { @@ -35,7 +35,7 @@ export class ConnectedAccount extends BaseClass { type: string; @Column() - verifie: boolean; + verified: boolean; @Column({ select: false }) visibility: number; diff --git a/util/src/entities/Member.ts b/util/src/entities/Member.ts index a246b891..928a25d7 100644 --- a/util/src/entities/Member.ts +++ b/util/src/entities/Member.ts @@ -85,8 +85,8 @@ export class Member extends BaseClassWithoutId { @Column() joined_at: Date; - @Column({ type: "bigint", nullable: true }) - premium_since?: number; + @Column() + premium_since?: Date; @Column() deaf: boolean; @@ -245,7 +245,7 @@ export class Member extends BaseClassWithoutId { nick: undefined, roles: [guild_id], // @everyone role joined_at: new Date(), - premium_since: (new Date()).getTime(), + premium_since: new Date(), deaf: false, mute: false, pending: false, diff --git a/util/src/interfaces/Interaction.ts b/util/src/interfaces/Interaction.ts index 3cafb2d5..5d3aae24 100644 --- a/util/src/interfaces/Interaction.ts +++ b/util/src/interfaces/Interaction.ts @@ -12,11 +12,13 @@ export interface Interaction { } export enum InteractionType { + SelfCommand = 0, Ping = 1, ApplicationCommand = 2, } export enum InteractionResponseType { + SelfCommandResponse = 0, Pong = 1, Acknowledge = 2, ChannelMessage = 3, diff --git a/util/src/util/Rights.ts b/util/src/util/Rights.ts index 9a99d393..db5384d0 100644 --- a/util/src/util/Rights.ts +++ b/util/src/util/Rights.ts @@ -65,6 +65,8 @@ export class Rights extends BitField { // inverts the presence confidentiality default (OPERATOR's presence is not routed by default, others' are) for a given user SELF_ADD_DISCOVERABLE: BitFlag(36), // can mark discoverable guilds that they have permissions to mark as discoverable MANAGE_GUILD_DIRECTORY: BitFlag(37), // can change anything in the primary guild directory + POGGERS: BitFlag(38), // can send confetti, screenshake, random user mention (@someone) + USE_ACHIEVEMENTS: BitFlag(39), // can use achievements and cheers INITIATE_INTERACTIONS: BitFlag(40), // can initiate interactions RESPOND_TO_INTERACTIONS: BitFlag(41), // can respond to interactions SEND_BACKDATED_EVENTS: BitFlag(42), // can send backdated events |