diff --git a/util/package-lock.json b/util/package-lock.json
index 386f95ec..9d20da93 100644
--- a/util/package-lock.json
+++ b/util/package-lock.json
@@ -6662,9 +6662,9 @@
"peer": true
},
"node_modules/simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
+ "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
"optional": true,
"peer": true,
"dependencies": {
@@ -13356,9 +13356,9 @@
"peer": true
},
"simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
+ "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
"optional": true,
"peer": true,
"requires": {
diff --git a/util/src/entities/Emoji.ts b/util/src/entities/Emoji.ts
index 32d39234..a3615b7d 100644
--- a/util/src/entities/Emoji.ts
+++ b/util/src/entities/Emoji.ts
@@ -41,6 +41,6 @@ export class Emoji extends BaseClass {
@Column({ type: "simple-array" })
roles: string[]; // roles this emoji is whitelisted to (new discord feature?)
- @Column({ type: "simple-array" })
+ @Column({ type: "simple-array", nullable: true })
groups: string[]; // user groups this emoji is whitelisted to (Fosscord extension)
}
diff --git a/util/src/util/Database.ts b/util/src/util/Database.ts
index e8177093..9ab5d14c 100644
--- a/util/src/util/Database.ts
+++ b/util/src/util/Database.ts
@@ -25,6 +25,7 @@ export function initDatabase(): Promise<Connection> {
// @ts-ignore
promise = createConnection({
type,
+ charset: 'utf8mb4',
url: isSqlite ? undefined : dbConnectionString,
database: isSqlite ? dbConnectionString : undefined,
// @ts-ignore
diff --git a/util/src/util/Rights.ts b/util/src/util/Rights.ts
index f0d00baf..9a99d393 100644
--- a/util/src/util/Rights.ts
+++ b/util/src/util/Rights.ts
@@ -35,9 +35,9 @@ export class Rights extends BitField {
ADD_MEMBERS: BitFlag(8), // can manually add any members in their guilds
BYPASS_RATE_LIMITS: BitFlag(9),
CREATE_APPLICATIONS: BitFlag(10),
- CREATE_CHANNELS: BitFlag(11),
+ CREATE_CHANNELS: BitFlag(11), // can create guild channels or threads in the guilds that they have permission
CREATE_DMS: BitFlag(12),
- CREATE_DM_GROUPS: BitFlag(13),
+ CREATE_DM_GROUPS: BitFlag(13), // can create group DMs or custom orphan channels
CREATE_GUILDS: BitFlag(14),
CREATE_INVITES: BitFlag(15), // can create mass invites in the guilds that they have CREATE_INSTANT_INVITE
CREATE_ROLES: BitFlag(16),
@@ -57,6 +57,17 @@ export class Rights extends BitField {
SELF_DELETE_DISABLE: BitFlag(30), // can disable/delete own account
DEBTABLE: BitFlag(31), // can use pay-to-use features
CREDITABLE: BitFlag(32), // can receive money from monetisation related features
+ KICK_BAN_MEMBERS: BitFlag(33),
+ // can kick or ban guild or group DM members in the guilds/groups that they have KICK_MEMBERS, or BAN_MEMBERS
+ SELF_LEAVE_GROUPS: BitFlag(34),
+ // can leave the guilds or group DMs that they joined on their own (one can always leave a guild or group DMs they have been force-added)
+ PRESENCE: BitFlag(35),
+ // 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
+ 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
};
any(permission: RightResolvable, checkOperator = true) {
|