diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d525281..a111393 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,6 +13,7 @@ jobs: contents: write issues: write pull-requests: write + id-token: write steps: - name: Checkout uses: actions/checkout@v6 @@ -22,6 +23,6 @@ jobs: extra_plugins: | @semantic-release/changelog @semantic-release/git - @anolilab/multi-semantic-release + @anolilab/semantic-release-pnpm env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.releaserc.json b/.releaserc.json index 511bd71..41c4b2a 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -1,7 +1,16 @@ { "branches": ["master"], "plugins": [ - "@semantic-release/commit-analyzer", + [ + "@semantic-release/commit-analyzer", + { + "releaseRules": [ + { "type": "refactor", "release": "patch" }, + { "type": "chore", "release": "patch" }, + { "type": "ci", "release": "patch" } + ] + } + ], "@semantic-release/release-notes-generator", [ "@semantic-release/changelog", @@ -13,7 +22,7 @@ "@semantic-release/github" ], "extends": [ - "@anolilab/multi-semantic-release" + "@anolilab/semantic-release-pnpm" ], "dryRun": false } \ No newline at end of file diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 2ba9966..79729b4 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -39,6 +39,7 @@ export class AnalyticsBase { private_message: 0, }, custom_events: {} as Record, + user_install_count: 0, }; public client_id: string = ''; @@ -160,6 +161,7 @@ export class AnalyticsBase { * @param client_id The client ID of the bot * @param guild_count The number of guilds the bot is in (default: 0) * @param user_count The number of users the bot is in (default: 0) + * @param user_install_count The number of user installs (default: 0) * @param guild_members The number of members in each guild (optional) * @returns {Promise} A promise that resolves when the stats are sent */ @@ -167,6 +169,7 @@ export class AnalyticsBase { client_id: string, guild_count: number = 0, user_count: number = 0, + user_install_count: number = 0, guild_members: number[] = [], ): Promise { this.debug('[DISCORDANALYTICS] Sending stats...'); @@ -197,6 +200,7 @@ export class AnalyticsBase { private_message: 0, }, custom_events: this.stats_data.custom_events, + user_install_count, } } } diff --git a/packages/discordjs-light/src/index.ts b/packages/discordjs-light/src/index.ts index 8d0e1eb..2223eaf 100644 --- a/packages/discordjs-light/src/index.ts +++ b/packages/discordjs-light/src/index.ts @@ -78,13 +78,17 @@ export default class DiscordAnalytics extends AnalyticsBase { ? ((await this._client.shard?.broadcastEval((c: any) => c.guilds.cache.reduce((a: number, g: any) => a + (g.memberCount || 0), 0)))?.reduce((a: number, b: number) => a + b, 0) || 0) : this._client.guilds.cache.reduce((a: number, g: any) => a + (g.memberCount || 0), 0); + const userInstallCount = this._sharded + ? ((await this._client.shard?.broadcastEval((c: any) => c.approximateUserInstallCount))?.reduce((a: number, b: number) => a + b, 0) || 0) + : this._client.approximateUserInstallCount; + const guildMembers: number[] = !this._sharded ? this._client.guilds.cache.map((guild: any) => guild.memberCount) : ((await this._client.shard?.broadcastEval( (c: any) => c.guilds.cache.map((guild: any) => guild.memberCount) ))?.flat() ?? []); - await this.sendStats(this._client.user.id, guildCount, userCount, guildMembers); + await this.sendStats(this._client.user.id, guildCount, userCount, userInstallCount, guildMembers); }, fast_mode ? 30000 : 300000); } diff --git a/packages/discordjs/src/index.ts b/packages/discordjs/src/index.ts index 6eda221..47cfe02 100644 --- a/packages/discordjs/src/index.ts +++ b/packages/discordjs/src/index.ts @@ -79,13 +79,17 @@ export default class DiscordAnalytics extends AnalyticsBase { ? ((await this._client.shard?.broadcastEval((c: any) => c.guilds.cache.reduce((a: number, g: any) => a + (g.memberCount || 0), 0)))?.reduce((a: number, b: number) => a + b, 0) || 0) : this._client.guilds.cache.reduce((a: number, g: any) => a + (g.memberCount || 0), 0); + const userInstallCount = this._sharded + ? ((await this._client.shard?.broadcastEval((c: any) => c.approximateUserInstallCount))?.reduce((a: number, b: number) => a + b, 0) || 0) + : this._client.approximateUserInstallCount; + const guildMembers: number[] = !this._sharded ? this._client.guilds.cache.map((guild: any) => guild.memberCount) : ((await this._client.shard?.broadcastEval( (c: any) => c.guilds.cache.map((guild: any) => guild.memberCount) ))?.flat() ?? []); - await this.sendStats(this._client.user.id, guildCount, userCount, guildMembers); + await this.sendStats(this._client.user.id, guildCount, userCount, userInstallCount, guildMembers); }, fast_mode ? 30000 : 300000); } diff --git a/packages/eris/src/index.ts b/packages/eris/src/index.ts index 80e3422..576940b 100644 --- a/packages/eris/src/index.ts +++ b/packages/eris/src/index.ts @@ -73,7 +73,7 @@ export default class DiscordAnalytics extends AnalyticsBase { const userCount = this._client.guilds.reduce((a: number, g: any) => a + g.memberCount, 0); const guildMembers: number[] = this._client.guilds.map((guild: any) => guild.memberCount); - await this.sendStats(this._client.user.id, guildCount, userCount, guildMembers); + await this.sendStats(this._client.user.id, guildCount, userCount, 0, guildMembers); }, fast_mode ? 30000 : 300000); } diff --git a/packages/oceanic/examples/index.ts b/packages/oceanic/examples/index.ts index ff37f95..3aed2b0 100644 --- a/packages/oceanic/examples/index.ts +++ b/packages/oceanic/examples/index.ts @@ -1,5 +1,14 @@ import DiscordAnalytics from '../src/index'; -import { ApplicationCommandOptionTypes, ApplicationCommandTypes, ButtonStyles, Client, ComponentTypes, InteractionTypes, TextInputStyles } from 'oceanic.js'; +import { + Application, + ApplicationCommandOptionTypes, + ApplicationCommandTypes, + ButtonStyles, + Client, + ComponentTypes, + InteractionTypes, + TextInputStyles +} from 'oceanic.js'; import 'dotenv/config'; const client = new Client({ @@ -126,7 +135,7 @@ client.on('interactionCreate', async (interaction) => { components: [], }); } else if (interaction.isModalSubmitInteraction()) { - const input = interaction.data.components.getComponents()[0].value; + const input = interaction.data.components.getComponents()[0].customID; interaction.reply({ content: `You submitted the modal! ${input}`, }); diff --git a/packages/oceanic/src/index.ts b/packages/oceanic/src/index.ts index 1b13240..82b1a89 100644 --- a/packages/oceanic/src/index.ts +++ b/packages/oceanic/src/index.ts @@ -74,9 +74,10 @@ export default class DiscordAnalytics extends AnalyticsBase { const guildCount = this._client.guilds.toArray().length; const userCount = this._client.guilds.reduce((a: number, g: any) => a + (g.memberCount || 0), 0); + const userInstallCount = this._client.application.approximateUserInstallCount const guildMembers: number[] = this._client.guilds.map((guild: any) => guild.memberCount); - await this.sendStats(this._client.user.id, guildCount, userCount, guildMembers); + await this.sendStats(this._client.user.id, guildCount, userCount, 0, guildMembers); }, fast_mode ? 30000 : 300000); }