Skip to content

Commit c4138cb

Browse files
NextFiresukitsubaki
andcommitted
feat: discord client detection with multi-variant support
#127 Co-authored-by: Suki Tsubaki <58035709+sukitsubaki@users.noreply.github.com>
1 parent d4ec250 commit c4138cb

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

music-rpc.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ class AppleMusicDiscordRPC {
5353
}
5454

5555
async setActivityLoop(): Promise<void> {
56+
const discordRunning = await isDiscordRunning();
57+
if (!discordRunning) {
58+
console.log("No Discord client is running");
59+
return;
60+
}
5661
try {
5762
await this.rpc.connect();
5863
console.log("Connected to Discord RPC");
@@ -72,10 +77,10 @@ class AppleMusicDiscordRPC {
7277
}
7378

7479
async setActivity(): Promise<number> {
75-
const open = await isMusicOpen(this.appName);
76-
console.log("open:", open);
80+
const musicRunning = await isMusicRunning(this.appName);
81+
console.log("musicRunning:", musicRunning);
7782

78-
if (!open) {
83+
if (!musicRunning) {
7984
await this.rpc.clearActivity();
8085
return this.defaultTimeout;
8186
}
@@ -224,7 +229,16 @@ await client.run();
224229
//#endregion
225230

226231
//#region JXA
227-
function isMusicOpen(appName: iTunesAppName): Promise<boolean> {
232+
function isDiscordRunning(): Promise<boolean> {
233+
return run((clientNames: string[]) => {
234+
const systemEvents = Application("System Events");
235+
return clientNames.some((clientName) =>
236+
systemEvents.processes[clientName]?.exists()
237+
);
238+
}, ["Discord", "Discord PTB", "Discord Canary"]);
239+
}
240+
241+
function isMusicRunning(appName: iTunesAppName): Promise<boolean> {
228242
return run((appName: iTunesAppName) => {
229243
return Application("System Events").processes[appName].exists();
230244
}, appName);

0 commit comments

Comments
 (0)