From 8ec54e8fdbdd0aa5ec29b9a90bad6372470aadd6 Mon Sep 17 00:00:00 2001 From: nolhan Date: Tue, 17 Feb 2026 14:49:12 +0100 Subject: [PATCH 1/4] fix: error using user installs in guild --- packages/discordjs/examples/index.ts | 2 ++ packages/discordjs/src/index.ts | 2 +- packages/oceanic/examples/index.ts | 4 ++- packages/oceanic/src/index.ts | 38 +++++++++++++++------------- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/discordjs/examples/index.ts b/packages/discordjs/examples/index.ts index f55001f..debcfdc 100644 --- a/packages/discordjs/examples/index.ts +++ b/packages/discordjs/examples/index.ts @@ -29,6 +29,8 @@ client.on('clientReady', async () => { name: 'test', description: 'Send a test message', dmPermission: true, + integrationTypes: [0, 1], // 0 = Guild Install, 1 = User Install + contexts: [0, 1, 2], // 0 = Guild, 1 = Bot DM, 2 = Private Channel options: [{ name: 'test', description: 'Test option', diff --git a/packages/discordjs/src/index.ts b/packages/discordjs/src/index.ts index b34e84e..32ad491 100644 --- a/packages/discordjs/src/index.ts +++ b/packages/discordjs/src/index.ts @@ -178,7 +178,7 @@ export default class DiscordAnalytics extends AnalyticsBase { const oneWeekAgo = new Date(); oneWeekAgo.setDate(oneWeekAgo.getDate() - 7); - if (!interaction.inGuild()) ++this.stats_data.users_type.private_message; + if (!interaction.inGuild() || !interaction.guild) ++this.stats_data.users_type.private_message; else if ( interaction.member && interaction.member.permissions diff --git a/packages/oceanic/examples/index.ts b/packages/oceanic/examples/index.ts index 3aed2b0..a8bda54 100644 --- a/packages/oceanic/examples/index.ts +++ b/packages/oceanic/examples/index.ts @@ -33,6 +33,8 @@ client.on('ready', async () => { type: ApplicationCommandTypes.CHAT_INPUT, name: 'test', description: 'Do some tests', + integrationTypes: [0, 1], // 0 = Guild Install, 1 = User Install + contexts: [0, 1, 2], // 0 = Guild, 1 = Bot DM, 2 = Private Channel options: [{ type: ApplicationCommandOptionTypes.STRING, name: 'type', @@ -76,7 +78,7 @@ client.on('interactionCreate', async (interaction) => { if (interaction.isCommandInteraction() && interaction.data.name === 'test') { const option = interaction.data.options.getString('type', false); - + if (option === 'button') interaction.reply({ content: 'Here is the button!', components: [{ diff --git a/packages/oceanic/src/index.ts b/packages/oceanic/src/index.ts index c05e7f1..fa54994 100644 --- a/packages/oceanic/src/index.ts +++ b/packages/oceanic/src/index.ts @@ -108,9 +108,9 @@ export default class DiscordAnalytics extends AnalyticsBase { this.updateOrInsert( this.stats_data.guildsLocales, - (x) => x.locale === interaction.guild?.preferredLocale, + (x) => x.locale === interaction.guildLocale, (x) => x.number++, - () => ({ locale: interaction.guild?.preferredLocale, number: 1 }), + () => ({ locale: interaction.guildLocale, number: 1 }), ); this.updateOrInsert( @@ -159,33 +159,33 @@ export default class DiscordAnalytics extends AnalyticsBase { (x) => x.guildId === (interaction.guild ? interaction.guildID : 'dm'), (x) => x.interactions++, () => ({ - guildId: interaction.guild ? interaction.guildID : 'dm', - name: interaction.guild ? interaction.guild.name : 'DM', - icon: interaction.guild && interaction.guild.icon ? interaction.guild.icon : undefined, + guildId: interaction.guildID ? interaction.guildID : 'dm', + name: this.is_guild_install(interaction) ? interaction.guild.name : 'DM', + icon: this.is_guild_install(interaction) && interaction.guild.icon ? interaction.guild.icon : undefined, interactions: 1, - members: interaction.guild ? interaction.guild.memberCount : 0, + members: this.is_guild_install(interaction) ? interaction.guild.memberCount : 0, }), ); const oneWeekAgo = new Date(); oneWeekAgo.setDate(oneWeekAgo.getDate() - 7); - if (!interaction.guild) ++this.stats_data.users_type.private_message + if (!interaction.guildID) ++this.stats_data.users_type.private_message else if ( interaction.member - && interaction.member.permissions - && interaction.member.permissions.has(8n) - || interaction.member.permissions.has(32n) + && interaction.memberPermissions + && interaction.memberPermissions.has(8n) + || interaction.memberPermissions.has(32n) ) ++this.stats_data.users_type.admin else if ( interaction.member - && interaction.member.permissions - && interaction.member.permissions.has(8192n) - || interaction.member.permissions.has(2n) - || interaction.member.permissions.has(4194304n) - || interaction.member.permissions.has(8388608n) - || interaction.member.permissions.has(16777216n) - || interaction.member.permissions.has(1099511627776n) + && interaction.memberPermissions + && interaction.memberPermissions.has(8192n) + || interaction.memberPermissions.has(2n) + || interaction.memberPermissions.has(4194304n) + || interaction.memberPermissions.has(8388608n) + || interaction.memberPermissions.has(16777216n) + || interaction.memberPermissions.has(1099511627776n) ) ++this.stats_data.users_type.moderator else if ( interaction.member @@ -208,4 +208,8 @@ export default class DiscordAnalytics extends AnalyticsBase { this._client.on('guildCreate', async (guild: any) => this.trackGuilds('create')); this._client.on('guildDelete', async (guild: any) => this.trackGuilds('delete')); } + + private is_guild_install (interaction: any): boolean { + return interaction.authorizingIntegrationOwners["0"] === interaction.guildID + } } From b31810c7593b32cf37ebd05836fd77a0e15ce4de Mon Sep 17 00:00:00 2001 From: nolhan Date: Tue, 17 Feb 2026 14:50:10 +0100 Subject: [PATCH 2/4] v2.8.2 --- packages/core/package.json | 2 +- packages/discordjs-light/package.json | 2 +- packages/discordjs/package.json | 2 +- packages/eris/package.json | 2 +- packages/oceanic/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 86c607a..33b64b7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@discordanalytics/core", - "version": "2.8.1", + "version": "2.8.2", "description": "Core package to work with Discord Analytics", "files": ["dist"], "main": "dist/index.js", diff --git a/packages/discordjs-light/package.json b/packages/discordjs-light/package.json index d2d8d0d..a635168 100644 --- a/packages/discordjs-light/package.json +++ b/packages/discordjs-light/package.json @@ -1,6 +1,6 @@ { "name": "@discordanalytics/discordjs-light", - "version": "2.8.1", + "version": "2.8.2", "description": "Discord.js light package for working with Discord Analytics", "files": ["dist"], "main": "dist/index.js", diff --git a/packages/discordjs/package.json b/packages/discordjs/package.json index 2d07d13..d2f17e8 100644 --- a/packages/discordjs/package.json +++ b/packages/discordjs/package.json @@ -1,6 +1,6 @@ { "name": "@discordanalytics/discordjs", - "version": "2.8.1", + "version": "2.8.2", "description": "Discord.js package for working with Discord Analytics", "files": ["dist"], "main": "dist/index.js", diff --git a/packages/eris/package.json b/packages/eris/package.json index 62a38c0..70dff15 100644 --- a/packages/eris/package.json +++ b/packages/eris/package.json @@ -1,6 +1,6 @@ { "name": "@discordanalytics/eris", - "version": "2.8.1", + "version": "2.8.2", "description": "Eris package for working with Discord Analytics", "files": ["dist"], "main": "dist/index.js", diff --git a/packages/oceanic/package.json b/packages/oceanic/package.json index bf3fd6b..9a08865 100644 --- a/packages/oceanic/package.json +++ b/packages/oceanic/package.json @@ -1,6 +1,6 @@ { "name": "@discordanalytics/oceanic", - "version": "2.8.1", + "version": "2.8.2", "description": "Oceanic package for working with Discord Analytics", "files": ["dist"], "main": "dist/index.js", From 84b9282bbab56313030ceffe7a0b71703198a2b5 Mon Sep 17 00:00:00 2001 From: nolhan Date: Tue, 17 Feb 2026 14:53:03 +0100 Subject: [PATCH 3/4] ci: updated node versions in CI tests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7392d32..e77b394 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x, 19.x, 20.x, 21.x, 22.x] + node-version: [20.x, 21.x, 22.x, 23.x, 24.x, v25.x] fail-fast: true name: Test TypeScript build From 40d8a6ba19317f276edf8ea4690aed0d1d391087 Mon Sep 17 00:00:00 2001 From: nolhan Date: Tue, 17 Feb 2026 14:53:23 +0100 Subject: [PATCH 4/4] ci: updated node versions in CI tests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e77b394..be5e6d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.x, 21.x, 22.x, 23.x, 24.x, v25.x] + node-version: [20.x, 21.x, 22.x, 23.x, 24.x, 25.x] fail-fast: true name: Test TypeScript build