summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--gateway/src/listener/listener.ts15
-rw-r--r--util/src/util/Config.ts16
3 files changed, 30 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore

index a09d215a..bd301f07 100644 --- a/.gitignore +++ b/.gitignore
@@ -7,4 +7,5 @@ api/assets/*.css database.db tsconfig.tsbuildinfo files/ -.env \ No newline at end of file +.env +config.json \ No newline at end of file diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts
index 79659a1f..032b2375 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts
@@ -117,7 +117,7 @@ export async function setupListener(this: WebSocket) { // TODO: only subscribe for events that are in the connection intents async function consume(this: WebSocket, opts: EventOpts) { const { data, event } = opts; - const id = data.id as string; + let id = data.id as string; const permission = this.permissions[id] || new Permissions("ADMINISTRATOR"); // default permission for dm const consumer = consume.bind(this); @@ -138,6 +138,10 @@ async function consume(this: WebSocket, opts: EventOpts) { this.listen_options ); break; + case "GUILD_MEMBER_REMOVE": + if (!this.member_events[data.user.id]) break; + this.member_events[data.user.id](); + break; case "RELATIONSHIP_REMOVE": case "CHANNEL_DELETE": case "GUILD_DELETE": @@ -151,7 +155,14 @@ async function consume(this: WebSocket, opts: EventOpts) { .has("VIEW_CHANNEL") ) return; - //No break needed here, we need to call the listenEvent function below + // No break needed here, we need to call the listenEvent function below + case "RELATIONSHIP_ADD": + this.events[data.user.id] = await listenEvent( + data.user.id, + handlePresenceUpdate.bind(this), + this.listen_options + ); + break; case "GUILD_CREATE": this.events[id] = await listenEvent(id, consumer, listenOpts); break; diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts
index 704f3f2f..92907d0c 100644 --- a/util/src/util/Config.ts +++ b/util/src/util/Config.ts
@@ -1,5 +1,10 @@ import "missing-native-js-functions"; import { ConfigValue, ConfigEntity, DefaultConfigOptions } from "../entities/Config"; +import path from "path"; +import fs from "fs"; + +// TODO: yaml instead of json +const overridePath = path.join(process.cwd(), "config.json"); var config: ConfigValue; var pairs: ConfigEntity[]; @@ -12,8 +17,16 @@ export const Config = { if (config) return config; pairs = await ConfigEntity.find(); config = pairsToConfig(pairs); + config = (config || {}).merge(DefaultConfigOptions); + + try { + const overrideConfig = JSON.parse(fs.readFileSync(overridePath, { encoding: "utf8" })); + config = overrideConfig.merge(config); + } catch (error) { + fs.writeFileSync(overridePath, JSON.stringify(config, null, 4)); + } - return this.set((config || {}).merge(DefaultConfigOptions)); + return this.set(config); }, get: function get() { return config; @@ -38,6 +51,7 @@ function applyConfig(val: ConfigValue) { pair.value = obj; return pair.save(); } + fs.writeFileSync(overridePath, JSON.stringify(val, null, 4)); return apply(val); }