@nerimity/nerimity.js 1.12.1 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Client.d.ts +34 -1
- package/build/Client.d.ts.map +1 -1
- package/build/Client.js +125 -4
- package/build/Client.js.map +1 -1
- package/build/EventNames.d.ts +22 -12
- package/build/EventNames.d.ts.map +1 -1
- package/build/EventNames.js +50 -45
- package/build/EventNames.js.map +1 -1
- package/build/RawData.d.ts +14 -0
- package/build/RawData.d.ts.map +1 -1
- package/build/RawData.js.map +1 -1
- package/build/bitwise.d.ts +16 -0
- package/build/bitwise.d.ts.map +1 -0
- package/build/bitwise.js +27 -0
- package/build/bitwise.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/build/services/ServerService.d.ts +3 -0
- package/build/services/ServerService.d.ts.map +1 -0
- package/build/services/ServerService.js +17 -0
- package/build/services/ServerService.js.map +1 -0
- package/build/services/serviceEndpoints.d.ts +1 -0
- package/build/services/serviceEndpoints.d.ts.map +1 -1
- package/build/services/serviceEndpoints.js +2 -0
- package/build/services/serviceEndpoints.js.map +1 -1
- package/package.json +37 -38
- package/src/Client.ts +184 -4
- package/src/EventNames.ts +86 -72
- package/src/RawData.ts +14 -1
- package/src/bitwise.ts +25 -0
- package/src/index.ts +2 -1
- package/src/services/ServerService.ts +18 -0
- package/src/services/serviceEndpoints.ts +4 -0
package/build/RawData.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawData.js","sourceRoot":"","sources":["../src/RawData.ts"],"names":[],"mappings":";;;AA2DA,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,2DAAe,CAAA;IACf,6DAAgB,CAAA;IAChB,uDAAa,CAAA;IACb,qDAAY,CAAA;AACd,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;
|
|
1
|
+
{"version":3,"file":"RawData.js","sourceRoot":"","sources":["../src/RawData.ts"],"names":[],"mappings":";;;AA2DA,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,2DAAe,CAAA;IACf,6DAAgB,CAAA;IAChB,uDAAa,CAAA;IACb,qDAAY,CAAA;AACd,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AA+BD,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,2DAAe,CAAA;IACf,qDAAY,CAAA;AACd,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const RolePermissions: {
|
|
2
|
+
readonly ADMIN: 1;
|
|
3
|
+
readonly SEND_MESSAGE: 2;
|
|
4
|
+
readonly MANAGE_ROLES: 4;
|
|
5
|
+
readonly MANAGE_CHANNELS: 8;
|
|
6
|
+
readonly KICK: 16;
|
|
7
|
+
readonly BAN: 32;
|
|
8
|
+
readonly MENTION_EVERYONE: 64;
|
|
9
|
+
readonly NICKNAME_MEMBER: 128;
|
|
10
|
+
readonly MENTION_ROLES: 256;
|
|
11
|
+
};
|
|
12
|
+
export type AvailablePermissions = (typeof RolePermissions)[keyof typeof RolePermissions];
|
|
13
|
+
export declare const hasBit: (permissions: number, bit: number) => boolean;
|
|
14
|
+
export declare const addBit: (permissions: number, bit: number) => number;
|
|
15
|
+
export declare const removeBit: (permissions: number, bit: number) => number;
|
|
16
|
+
//# sourceMappingURL=bitwise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../src/bitwise.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;CAUlB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,MAAM,gBAAiB,MAAM,OAAO,MAAM,YAEtD,CAAC;AAEF,eAAO,MAAM,MAAM,gBAAiB,MAAM,OAAO,MAAM,WAEtD,CAAC;AACF,eAAO,MAAM,SAAS,gBAAiB,MAAM,OAAO,MAAM,WAEzD,CAAC"}
|
package/build/bitwise.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeBit = exports.addBit = exports.hasBit = exports.RolePermissions = void 0;
|
|
4
|
+
exports.RolePermissions = {
|
|
5
|
+
ADMIN: 1,
|
|
6
|
+
SEND_MESSAGE: 2,
|
|
7
|
+
MANAGE_ROLES: 4,
|
|
8
|
+
MANAGE_CHANNELS: 8,
|
|
9
|
+
KICK: 16,
|
|
10
|
+
BAN: 32,
|
|
11
|
+
MENTION_EVERYONE: 64,
|
|
12
|
+
NICKNAME_MEMBER: 128,
|
|
13
|
+
MENTION_ROLES: 256,
|
|
14
|
+
};
|
|
15
|
+
const hasBit = (permissions, bit) => {
|
|
16
|
+
return (permissions & bit) === bit;
|
|
17
|
+
};
|
|
18
|
+
exports.hasBit = hasBit;
|
|
19
|
+
const addBit = (permissions, bit) => {
|
|
20
|
+
return permissions | bit;
|
|
21
|
+
};
|
|
22
|
+
exports.addBit = addBit;
|
|
23
|
+
const removeBit = (permissions, bit) => {
|
|
24
|
+
return permissions & ~bit;
|
|
25
|
+
};
|
|
26
|
+
exports.removeBit = removeBit;
|
|
27
|
+
//# sourceMappingURL=bitwise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitwise.js","sourceRoot":"","sources":["../src/bitwise.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;IACP,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,GAAG;IACpB,aAAa,EAAE,GAAG;CACV,CAAC;AAKJ,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,EAAE;IACzD,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC;AACrC,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB;AAEK,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,EAAE;IACzD,OAAO,WAAW,GAAG,GAAG,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB;AACK,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,EAAE;IAC5D,OAAO,WAAW,GAAG,CAAC,GAAG,CAAC;AAC5B,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { Client, Events } from "./Client";
|
|
|
2
2
|
export { AttachmentBuilder } from "./Attachment";
|
|
3
3
|
export { RPCClient, EmitPayload } from "./RPCClient";
|
|
4
4
|
export { WebhookBuilder } from "./Webhooks";
|
|
5
|
+
export { RolePermissions } from "./bitwise";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebhookBuilder = exports.RPCClient = exports.AttachmentBuilder = exports.Events = exports.Client = void 0;
|
|
3
|
+
exports.RolePermissions = exports.WebhookBuilder = exports.RPCClient = exports.AttachmentBuilder = exports.Events = exports.Client = void 0;
|
|
4
4
|
var Client_1 = require("./Client");
|
|
5
5
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
|
|
6
6
|
Object.defineProperty(exports, "Events", { enumerable: true, get: function () { return Client_1.Events; } });
|
|
@@ -10,4 +10,6 @@ var RPCClient_1 = require("./RPCClient");
|
|
|
10
10
|
Object.defineProperty(exports, "RPCClient", { enumerable: true, get: function () { return RPCClient_1.RPCClient; } });
|
|
11
11
|
var Webhooks_1 = require("./Webhooks");
|
|
12
12
|
Object.defineProperty(exports, "WebhookBuilder", { enumerable: true, get: function () { return Webhooks_1.WebhookBuilder; } });
|
|
13
|
+
var bitwise_1 = require("./bitwise");
|
|
14
|
+
Object.defineProperty(exports, "RolePermissions", { enumerable: true, get: function () { return bitwise_1.RolePermissions; } });
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAAjC,gGAAA,MAAM,OAAA;AAAE,gGAAA,MAAM,OAAA;AACvB,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,yCAAqD;AAA5C,sGAAA,SAAS,OAAA;AAClB,uCAA4C;AAAnC,0GAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAAjC,gGAAA,MAAM,OAAA;AAAE,gGAAA,MAAM,OAAA;AACvB,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,yCAAqD;AAA5C,sGAAA,SAAS,OAAA;AAClB,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerService.d.ts","sourceRoot":"","sources":["../../src/services/ServerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,gBAUf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.banServerMember = void 0;
|
|
4
|
+
const MessageService_1 = require("./MessageService");
|
|
5
|
+
const serviceEndpoints_1 = require("./serviceEndpoints");
|
|
6
|
+
async function banServerMember(client, serverId, userId) {
|
|
7
|
+
return await (0, MessageService_1.request)({
|
|
8
|
+
client: client,
|
|
9
|
+
url: serviceEndpoints_1.ServiceEndpoints.serverMemberBan(serverId, userId),
|
|
10
|
+
method: "POST",
|
|
11
|
+
useToken: true,
|
|
12
|
+
}).catch((err) => {
|
|
13
|
+
throw new Error(`Failed to ban server member. ${err.message}`);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
exports.banServerMember = banServerMember;
|
|
17
|
+
//# sourceMappingURL=ServerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerService.js","sourceRoot":"","sources":["../../src/services/ServerService.ts"],"names":[],"mappings":";;;AACA,qDAA2C;AAC3C,yDAAsD;AAE/C,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,QAAgB,EAChB,MAAc;IAEd,OAAO,MAAM,IAAA,wBAAO,EAAM;QACxB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,mCAAgB,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC;QACvD,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,0CAaC"}
|
|
@@ -10,5 +10,6 @@ export declare const ServiceEndpoints: {
|
|
|
10
10
|
DeletePost: (postId: string) => string;
|
|
11
11
|
BotCommands: () => string;
|
|
12
12
|
ButtonClickCallback: (channelId: string, messageId: string, buttonId: string) => string;
|
|
13
|
+
serverMemberBan: (serverId: string, userId: string) => string;
|
|
13
14
|
};
|
|
14
15
|
//# sourceMappingURL=serviceEndpoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceEndpoints.d.ts","sourceRoot":"","sources":["../../src/services/serviceEndpoints.ts"],"names":[],"mappings":"AACA,eAAO,IAAI,IAAI,QAAyB,CAAC;AAGzC,eAAO,MAAM,UAAU,YAAa,MAAM,SAGzC,CAAC;
|
|
1
|
+
{"version":3,"file":"serviceEndpoints.d.ts","sourceRoot":"","sources":["../../src/services/serviceEndpoints.ts"],"names":[],"mappings":"AACA,eAAO,IAAI,IAAI,QAAyB,CAAC;AAGzC,eAAO,MAAM,UAAU,YAAa,MAAM,SAGzC,CAAC;AA0BF,eAAO,MAAM,gBAAgB;6BAzBG,MAAM;6BAEN,MAAM;6BAEN,MAAM,aAAa,MAAM;;;uBAM/B,MAAM;yBACJ,MAAM;;qCAKrB,MAAM,aACN,MAAM,YACP,MAAM;gCAIiB,MAAM,UAAU,MAAM;CAcxD,CAAC"}
|
|
@@ -19,6 +19,7 @@ const EditPost = (postId) => `${BaseUrl}/posts/${postId}`;
|
|
|
19
19
|
const DeletePost = (postId) => `${BaseUrl}/posts/${postId}`;
|
|
20
20
|
const BotCommands = () => `${BaseUrl}/applications/bot/commands`;
|
|
21
21
|
const ButtonClickCallback = (channelId, messageId, buttonId) => `${BaseUrl}/channels/${channelId}/messages/${messageId}/buttons/${buttonId}/callback`;
|
|
22
|
+
const serverMemberBan = (serverId, userId) => `${BaseUrl}/servers/${serverId}/bans/${userId}`;
|
|
22
23
|
exports.ServiceEndpoints = {
|
|
23
24
|
GetMessages,
|
|
24
25
|
PostMessage,
|
|
@@ -29,5 +30,6 @@ exports.ServiceEndpoints = {
|
|
|
29
30
|
DeletePost,
|
|
30
31
|
BotCommands,
|
|
31
32
|
ButtonClickCallback,
|
|
33
|
+
serverMemberBan,
|
|
32
34
|
};
|
|
33
35
|
//# sourceMappingURL=serviceEndpoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceEndpoints.js","sourceRoot":"","sources":["../../src/services/serviceEndpoints.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AACpC,QAAA,IAAI,GAAG,sBAAsB,CAAC;AACzC,IAAI,OAAO,GAAG,YAAI,GAAG,MAAM,CAAC;AAErB,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,YAAI,GAAG,OAAO,CAAC;IACf,OAAO,GAAG,YAAI,GAAG,MAAM,CAAC;AAC1B,CAAC,CAAC;AAHW,QAAA,UAAU,cAGrB;AACF,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CACxC,GAAG,OAAO,aAAa,SAAS,WAAW,CAAC;AAC9C,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CACxC,GAAG,OAAO,aAAa,SAAS,WAAW,CAAC;AAC9C,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CAC3D,GAAG,OAAO,aAAa,SAAS,aAAa,SAAS,EAAE,CAAC;AAE3D,QAAQ;AACR,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,QAAQ,CAAC;AAC1C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,QAAQ,CAAC;AAC1C,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,OAAO,UAAU,MAAM,EAAE,CAAC;AAClE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,OAAO,UAAU,MAAM,EAAE,CAAC;AAEpE,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,4BAA4B,CAAC;AAEjE,MAAM,mBAAmB,GAAG,CAC1B,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,EAAE,CACF,GAAG,OAAO,aAAa,SAAS,aAAa,SAAS,YAAY,QAAQ,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"serviceEndpoints.js","sourceRoot":"","sources":["../../src/services/serviceEndpoints.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AACpC,QAAA,IAAI,GAAG,sBAAsB,CAAC;AACzC,IAAI,OAAO,GAAG,YAAI,GAAG,MAAM,CAAC;AAErB,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,YAAI,GAAG,OAAO,CAAC;IACf,OAAO,GAAG,YAAI,GAAG,MAAM,CAAC;AAC1B,CAAC,CAAC;AAHW,QAAA,UAAU,cAGrB;AACF,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CACxC,GAAG,OAAO,aAAa,SAAS,WAAW,CAAC;AAC9C,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CACxC,GAAG,OAAO,aAAa,SAAS,WAAW,CAAC;AAC9C,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CAC3D,GAAG,OAAO,aAAa,SAAS,aAAa,SAAS,EAAE,CAAC;AAE3D,QAAQ;AACR,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,QAAQ,CAAC;AAC1C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,QAAQ,CAAC;AAC1C,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,OAAO,UAAU,MAAM,EAAE,CAAC;AAClE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,OAAO,UAAU,MAAM,EAAE,CAAC;AAEpE,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,4BAA4B,CAAC;AAEjE,MAAM,mBAAmB,GAAG,CAC1B,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,EAAE,CACF,GAAG,OAAO,aAAa,SAAS,aAAa,SAAS,YAAY,QAAQ,WAAW,CAAC;AAExF,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE,CAC3D,GAAG,OAAO,YAAY,QAAQ,SAAS,MAAM,EAAE,CAAC;AAErC,QAAA,gBAAgB,GAAG;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,mBAAmB;IACnB,eAAe;CAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@nerimity/nerimity.js",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "build/index.js",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@nerimity/nerimity.js",
|
|
3
|
+
"version": "1.14.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"keywords": [],
|
|
7
|
+
"author": "SupertigerDev",
|
|
8
|
+
"license": "ISC",
|
|
9
|
+
"devDependencies": {
|
|
10
|
+
"@types/node-fetch": "^2.6.12",
|
|
11
|
+
"@types/ws": "^8.5.12",
|
|
12
|
+
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
|
13
|
+
"@typescript-eslint/parser": "^7.0.1",
|
|
14
|
+
"eslint": "^8.56.0",
|
|
15
|
+
"nodemon": "^3.0.3",
|
|
16
|
+
"ts-node": "^10.9.2",
|
|
17
|
+
"typescript": "^5.3.3"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"eventemitter3": "^5.0.1",
|
|
21
|
+
"node-fetch": "^2.7.0",
|
|
22
|
+
"socket.io-client": "^4.7.4",
|
|
23
|
+
"ws": "^8.18.0"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/Nerimity/nerimity.js.git"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/Nerimity/nerimity.js/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/Nerimity/nerimity.js#readme",
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"dev": "tsc && node tests/test.js"
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/Client.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
RawPost,
|
|
19
19
|
RawServer,
|
|
20
20
|
RawServerMember,
|
|
21
|
+
RawServerRole,
|
|
21
22
|
RawUser,
|
|
22
23
|
} from "./RawData";
|
|
23
24
|
import {
|
|
@@ -34,6 +35,13 @@ import {
|
|
|
34
35
|
postPost,
|
|
35
36
|
} from "./services/PostsService";
|
|
36
37
|
import { updateCommands as postUpdateCommands } from "./services/ApplicationService";
|
|
38
|
+
import { banServerMember } from "./services/ServerService";
|
|
39
|
+
import {
|
|
40
|
+
addBit,
|
|
41
|
+
AvailablePermissions,
|
|
42
|
+
hasBit,
|
|
43
|
+
RolePermissions,
|
|
44
|
+
} from "./bitwise";
|
|
37
45
|
|
|
38
46
|
export const Events = ClientEvents;
|
|
39
47
|
|
|
@@ -88,6 +96,10 @@ class EventHandlers {
|
|
|
88
96
|
SocketServerEvents.SERVER_MEMBER_JOINED,
|
|
89
97
|
this.onServerMemberJoined.bind(this)
|
|
90
98
|
);
|
|
99
|
+
client.socket.on(
|
|
100
|
+
SocketServerEvents.SERVER_MEMBER_UPDATED,
|
|
101
|
+
this.onServerMemberUpdated.bind(this)
|
|
102
|
+
);
|
|
91
103
|
client.socket.on(
|
|
92
104
|
SocketServerEvents.SERVER_MEMBER_LEFT,
|
|
93
105
|
this.onServerMemberLeft.bind(this)
|
|
@@ -124,6 +136,22 @@ class EventHandlers {
|
|
|
124
136
|
SocketServerEvents.MESSAGE_BUTTON_CLICKED,
|
|
125
137
|
this.onMessageButtonClicked.bind(this)
|
|
126
138
|
);
|
|
139
|
+
client.socket.on(
|
|
140
|
+
SocketServerEvents.SERVER_ROLE_CREATED,
|
|
141
|
+
this.onServerRoleCreated.bind(this)
|
|
142
|
+
);
|
|
143
|
+
client.socket.on(
|
|
144
|
+
SocketServerEvents.SERVER_ROLE_DELETED,
|
|
145
|
+
this.onServerRoleDeleted.bind(this)
|
|
146
|
+
);
|
|
147
|
+
client.socket.on(
|
|
148
|
+
SocketServerEvents.SERVER_ROLE_UPDATED,
|
|
149
|
+
this.onServerRoleUpdated.bind(this)
|
|
150
|
+
);
|
|
151
|
+
client.socket.on(
|
|
152
|
+
SocketServerEvents.SERVER_ROLE_ORDER_UPDATED,
|
|
153
|
+
this.onServerRoleOrderUpdated.bind(this)
|
|
154
|
+
);
|
|
127
155
|
}
|
|
128
156
|
onConnect() {
|
|
129
157
|
this.socket.emit(SocketClientEvents.AUTHENTICATE, {
|
|
@@ -149,6 +177,12 @@ class EventHandlers {
|
|
|
149
177
|
server?.members.setCache(member);
|
|
150
178
|
}
|
|
151
179
|
|
|
180
|
+
for (let i = 0; i < payload.serverRoles.length; i++) {
|
|
181
|
+
const role = payload.serverRoles[i];
|
|
182
|
+
const server = this.client.servers.cache.get(role.serverId);
|
|
183
|
+
server?.roles.setCache(role);
|
|
184
|
+
}
|
|
185
|
+
|
|
152
186
|
this.client.emit(ClientEvents.Ready);
|
|
153
187
|
}
|
|
154
188
|
|
|
@@ -157,14 +191,30 @@ class EventHandlers {
|
|
|
157
191
|
this.client.users.setCache(payload.member.user);
|
|
158
192
|
const member = server?.members.setCache(payload.member);
|
|
159
193
|
if (!member) return;
|
|
160
|
-
this.client.emit(
|
|
194
|
+
this.client.emit(ClientEvents.ServerMemberJoined, member);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
onServerMemberUpdated(payload: {
|
|
198
|
+
serverId: string;
|
|
199
|
+
userId: string;
|
|
200
|
+
updated: {
|
|
201
|
+
roleIds: string[];
|
|
202
|
+
};
|
|
203
|
+
}) {
|
|
204
|
+
const server = this.client.servers.cache.get(payload.serverId);
|
|
205
|
+
const member = server?.members.cache.get(payload.userId);
|
|
206
|
+
if (!member) return;
|
|
207
|
+
|
|
208
|
+
updateClass<ServerMember>(member, payload.updated);
|
|
209
|
+
|
|
210
|
+
this.client.emit(ClientEvents.ServerMemberUpdated, member);
|
|
161
211
|
}
|
|
162
212
|
|
|
163
213
|
onServerJoined(payload: {
|
|
164
214
|
server: RawServer;
|
|
165
215
|
members: RawServerMember[];
|
|
166
216
|
channels: RawChannel[];
|
|
167
|
-
|
|
217
|
+
roles: RawServerRole[];
|
|
168
218
|
// memberPresences: any[]
|
|
169
219
|
// voiceChannelUsers: any[];
|
|
170
220
|
}) {
|
|
@@ -175,6 +225,10 @@ class EventHandlers {
|
|
|
175
225
|
this.client.users.setCache(member.user);
|
|
176
226
|
server?.members.setCache(member);
|
|
177
227
|
}
|
|
228
|
+
for (let i = 0; i < payload.roles.length; i++) {
|
|
229
|
+
const role = payload.roles[i];
|
|
230
|
+
server?.roles.setCache(role);
|
|
231
|
+
}
|
|
178
232
|
|
|
179
233
|
for (let i = 0; i < payload.channels.length; i++) {
|
|
180
234
|
const channel = payload.channels[i];
|
|
@@ -234,7 +288,7 @@ class EventHandlers {
|
|
|
234
288
|
const server = this.client.servers.cache.get(payload.serverId);
|
|
235
289
|
const member = server?.members.cache.get(payload.userId);
|
|
236
290
|
if (!member) return;
|
|
237
|
-
this.client.emit(
|
|
291
|
+
this.client.emit(ClientEvents.ServerMemberLeft, member);
|
|
238
292
|
server?.members.cache.delete(payload.userId);
|
|
239
293
|
}
|
|
240
294
|
onMessageCreated(payload: { message: RawMessage }) {
|
|
@@ -243,7 +297,46 @@ class EventHandlers {
|
|
|
243
297
|
}
|
|
244
298
|
onMessageButtonClicked(payload: MessageButtonClickPayload) {
|
|
245
299
|
const button = new Button(this.client, payload);
|
|
246
|
-
this.client.emit(
|
|
300
|
+
this.client.emit(ClientEvents.MessageButtonClick, button);
|
|
301
|
+
}
|
|
302
|
+
onServerRoleCreated(payload: RawServerRole) {
|
|
303
|
+
const server = this.client.servers.cache.get(payload.serverId);
|
|
304
|
+
const role = server?.roles.setCache(payload);
|
|
305
|
+
if (!role) return;
|
|
306
|
+
this.client.emit(ClientEvents.ServerRoleCreated, role);
|
|
307
|
+
}
|
|
308
|
+
onServerRoleDeleted(payload: { serverId: string; roleId: string }) {
|
|
309
|
+
const server = this.client.servers.cache.get(payload.serverId);
|
|
310
|
+
const role = server?.roles.cache.get(payload.roleId);
|
|
311
|
+
if (!role) return;
|
|
312
|
+
server?.roles.cache.delete(payload.roleId);
|
|
313
|
+
|
|
314
|
+
this.client.emit(ClientEvents.ServerRoleDeleted, role);
|
|
315
|
+
}
|
|
316
|
+
onServerRoleUpdated(payload: {
|
|
317
|
+
serverId: string;
|
|
318
|
+
roleId: string;
|
|
319
|
+
updated: Partial<RawServerRole>;
|
|
320
|
+
}) {
|
|
321
|
+
const server = this.client.servers.cache.get(payload.serverId);
|
|
322
|
+
const role = server?.roles.cache.get(payload.roleId);
|
|
323
|
+
if (!role) return;
|
|
324
|
+
|
|
325
|
+
updateClass<ServerRole>(role, payload.updated);
|
|
326
|
+
|
|
327
|
+
this.client.emit(ClientEvents.ServerRoleUpdated, role);
|
|
328
|
+
}
|
|
329
|
+
onServerRoleOrderUpdated(payload: { serverId: string; roleIds: string[] }) {
|
|
330
|
+
const server = this.client.servers.cache.get(payload.serverId);
|
|
331
|
+
|
|
332
|
+
for (let i = 0; i < payload.roleIds.length; i++) {
|
|
333
|
+
const roleId = payload.roleIds[i];
|
|
334
|
+
const role = server?.roles.cache.get(roleId);
|
|
335
|
+
if (!role) continue;
|
|
336
|
+
role.order = i + 1;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
this.client.emit(ClientEvents.ServerRoleOrderUpdated, server?.roles!);
|
|
247
340
|
}
|
|
248
341
|
}
|
|
249
342
|
|
|
@@ -280,8 +373,11 @@ export class Server {
|
|
|
280
373
|
id: string;
|
|
281
374
|
name: string;
|
|
282
375
|
avatar?: string;
|
|
376
|
+
defaultRoleId: string;
|
|
377
|
+
createdById: string;
|
|
283
378
|
|
|
284
379
|
members: ServerMembers;
|
|
380
|
+
roles: ServerRoles;
|
|
285
381
|
constructor(client: Client, server: RawServer) {
|
|
286
382
|
this.client = client;
|
|
287
383
|
|
|
@@ -289,6 +385,49 @@ export class Server {
|
|
|
289
385
|
this.name = server.name;
|
|
290
386
|
this.avatar = server.avatar;
|
|
291
387
|
this.members = new ServerMembers(this.client);
|
|
388
|
+
this.roles = new ServerRoles(this.client);
|
|
389
|
+
this.defaultRoleId = server.defaultRoleId;
|
|
390
|
+
this.createdById = server.createdById;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
async banMember(userId: string) {
|
|
394
|
+
return banServerMember(this.client, this.id, userId);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
export class ServerRoles {
|
|
399
|
+
client: Client;
|
|
400
|
+
cache: Collection<string, ServerRole>;
|
|
401
|
+
constructor(client: Client) {
|
|
402
|
+
this.client = client;
|
|
403
|
+
this.cache = new Collection();
|
|
404
|
+
}
|
|
405
|
+
setCache(rawServerRole: RawServerRole) {
|
|
406
|
+
const server = new ServerRole(this.client, rawServerRole);
|
|
407
|
+
this.cache.set(server.id, server);
|
|
408
|
+
return server;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export class ServerRole {
|
|
413
|
+
client: Client;
|
|
414
|
+
id: string;
|
|
415
|
+
name: string;
|
|
416
|
+
permissions: number;
|
|
417
|
+
hexColor: string;
|
|
418
|
+
server: Server;
|
|
419
|
+
order: number;
|
|
420
|
+
isDefaultRole?: boolean;
|
|
421
|
+
constructor(client: Client, role: RawServerRole) {
|
|
422
|
+
this.client = client;
|
|
423
|
+
this.server = this.client.servers.cache.get(role.serverId)!;
|
|
424
|
+
|
|
425
|
+
this.id = role.id;
|
|
426
|
+
this.name = role.name;
|
|
427
|
+
this.permissions = role.permissions;
|
|
428
|
+
this.hexColor = role.hexColor;
|
|
429
|
+
this.order = role.order;
|
|
430
|
+
this.isDefaultRole = this.server.defaultRoleId === this.id;
|
|
292
431
|
}
|
|
293
432
|
}
|
|
294
433
|
|
|
@@ -310,10 +449,14 @@ export class ServerMember {
|
|
|
310
449
|
id: string;
|
|
311
450
|
user: User;
|
|
312
451
|
server: Server;
|
|
452
|
+
roleIds: string[];
|
|
453
|
+
nickname?: string | null;
|
|
313
454
|
|
|
314
455
|
constructor(client: Client, member: RawServerMember) {
|
|
315
456
|
this.client = client;
|
|
316
457
|
this.id = member.user.id;
|
|
458
|
+
this.roleIds = member.roleIds;
|
|
459
|
+
this.nickname = member.nickname;
|
|
317
460
|
|
|
318
461
|
this.user = this.client.users.cache.get(member.user.id)!;
|
|
319
462
|
this.server = this.client.servers.cache.get(member.serverId)!;
|
|
@@ -321,6 +464,43 @@ export class ServerMember {
|
|
|
321
464
|
toString() {
|
|
322
465
|
return `[@:${this.id}]`;
|
|
323
466
|
}
|
|
467
|
+
async ban() {
|
|
468
|
+
return banServerMember(this.client, this.server.id, this.user.id);
|
|
469
|
+
}
|
|
470
|
+
get roles() {
|
|
471
|
+
return this.roleIds
|
|
472
|
+
.map((id) => this.server.roles.cache.get(id)!)
|
|
473
|
+
.filter(Boolean);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
permissions(this: ServerMember) {
|
|
477
|
+
const defaultRoleId = this.server?.defaultRoleId;
|
|
478
|
+
const defaultRole = this.server.roles.cache.get(defaultRoleId!);
|
|
479
|
+
|
|
480
|
+
let currentPermissions = defaultRole?.permissions || 0;
|
|
481
|
+
|
|
482
|
+
const memberRoles = this.roles;
|
|
483
|
+
for (let i = 0; i < memberRoles.length; i++) {
|
|
484
|
+
const role = memberRoles[i];
|
|
485
|
+
currentPermissions = addBit(currentPermissions, role?.permissions || 0);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
return currentPermissions;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
hasPermission(
|
|
492
|
+
permission: AvailablePermissions,
|
|
493
|
+
ignoreAdmin = false,
|
|
494
|
+
ignoreCreator = false
|
|
495
|
+
) {
|
|
496
|
+
if (!ignoreCreator) {
|
|
497
|
+
if (this.server.createdById === this.user.id) return true;
|
|
498
|
+
}
|
|
499
|
+
if (!ignoreAdmin) {
|
|
500
|
+
if (hasBit(this.permissions(), RolePermissions.ADMIN)) return true;
|
|
501
|
+
}
|
|
502
|
+
return hasBit(this.permissions(), permission);
|
|
503
|
+
}
|
|
324
504
|
}
|
|
325
505
|
|
|
326
506
|
export class Channels {
|