Skip to content

Commit b194c7c

Browse files
committed
Bump version to 3.0.0, update dependencies, and track users type
1 parent 2de1155 commit b194c7c

5 files changed

Lines changed: 54 additions & 27 deletions

File tree

357 Bytes
Binary file not shown.
16.3 KB
Binary file not shown.

discordanalytics/client.py

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ def __init__(self, client: discord.Client, api_key: str, debug: bool = False):
4949
"guildsStats": [], # {guildId:str, name:str, icon:str, members:int, interactions: int}[]
5050
"addedGuilds": 0,
5151
"removedGuilds": 0,
52+
"users_type": {
53+
"admin": 0,
54+
"moderator": 0,
55+
"new_member": 0,
56+
"other": 0,
57+
"private_message": 0
58+
}
5259
}
5360

5461
def track_events(self):
@@ -140,6 +147,13 @@ async def send_stats(self):
140147
"guildsStats": [],
141148
"addedGuilds": 0,
142149
"removedGuilds": 0,
150+
"users_type": {
151+
"admin": 0,
152+
"moderator": 0,
153+
"new_member": 0,
154+
"other": 0,
155+
"private_message": 0
156+
}
143157
}
144158

145159
await asyncio.sleep(10 if "--dev" in sys.argv else 300)
@@ -170,19 +184,6 @@ def track_interactions(self, interaction: discord.Interaction):
170184
if not self.is_ready:
171185
raise ValueError(ErrorCodes.INSTANCE_NOT_INITIALIZED)
172186

173-
guilds = []
174-
for guild in self.client.guilds:
175-
if guild.preferred_locale is not None:
176-
guild_locale = next((x for x in guilds if x["locale"] == guild.preferred_locale.value), None)
177-
if guild_locale is not None:
178-
guild_locale["number"] += 1
179-
else:
180-
guilds.append({
181-
"locale": guild.preferred_locale.value,
182-
"number": 1
183-
})
184-
self.stats["guildsLocales"] = guilds
185-
186187
locale = next((x for x in self.stats["locales"] if x["locale"] == interaction.locale.value), None)
187188
if locale is not None:
188189
locale["number"] += 1
@@ -213,17 +214,43 @@ def track_interactions(self, interaction: discord.Interaction):
213214
"type": interaction.type.value
214215
})
215216

216-
guild_data = next((x for x in self.stats["guildsStats"] if x["guildId"] == str(interaction.guild.id)), None)
217-
if guild_data is not None:
218-
guild_data["interactions"] += 1
217+
if interaction.guild is None:
218+
self.stats["users_type"]["private_message"] += 1
219219
else:
220-
self.stats["guildsStats"].append({
221-
"guildId": str(interaction.guild.id),
222-
"name": interaction.guild.name,
223-
"icon": interaction.guild.icon,
224-
"members": interaction.guild.member_count,
225-
"interactions": 1
226-
})
220+
guilds = []
221+
for guild in self.client.guilds:
222+
if guild.preferred_locale is not None:
223+
guild_locale = next((x for x in guilds if x["locale"] == guild.preferred_locale.value), None)
224+
if guild_locale is not None:
225+
guild_locale["number"] += 1
226+
else:
227+
guilds.append({
228+
"locale": guild.preferred_locale.value,
229+
"number": 1
230+
})
231+
self.stats["guildsLocales"] = guilds
232+
233+
guild_data = next((x for x in self.stats["guildsStats"] if x["guildId"] == str(interaction.guild.id)), None)
234+
if guild_data is not None:
235+
guild_data["interactions"] += 1
236+
else:
237+
self.stats["guildsStats"].append({
238+
"guildId": str(interaction.guild.id),
239+
"name": interaction.guild.name,
240+
"icon": interaction.guild.icon.key,
241+
"members": interaction.guild.member_count,
242+
"interactions": 1
243+
})
244+
245+
if interaction.user.guild_permissions.administrator or interaction.user.guild_permissions.manage_guild:
246+
self.stats["users_type"]["admin"] += 1
247+
elif interaction.user.guild_permissions.manage_messages or interaction.user.guild_permissions.kick_members or interaction.user.guild_permissions.ban_members or interaction.user.guild_permissions.mute_members or interaction.user.guild_permissions.deafen_members or interaction.user.guild_permissions.move_members or interaction.user.guild_permissions.moderate_members:
248+
self.stats["users_type"]["moderator"] += 1
249+
# check if the member is less than 7 days old
250+
elif interaction.user.joined_at is not None and (datetime.now() - interaction.user.joined_at).days <= 7:
251+
self.stats["users_type"]["new_member"] += 1
252+
else:
253+
self.stats["users_type"]["other"] += 1
227254

228255
# type = delete or create
229256
def trackGuilds(self, guild: discord.Guild, type: Literal["create", "delete"]):

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
55
[project]
66
name = "discordanalytics"
77
description = "A Python package for interacting with Discord Analytics API"
8-
version = "0.0.5"
8+
version = "3.0.0"
99
authors = [
1010
{name = "ValDesign", email = "valdesign.dev@gmail.com"}
1111
]

requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
discord.py==2.3.2
2-
requests==2.31.0
3-
setuptools==68.0.0
1+
discord.py==2.4.0
2+
requests==2.32.3
3+
setuptools==71.0.3
44
wheel==0.43.0

0 commit comments

Comments
 (0)