Skip to content

Commit 77cd140

Browse files
authored
Update daily_report.py
Signed-off-by: nellins <drewnellins@gmail.com>
1 parent ab9339b commit 77cd140

1 file changed

Lines changed: 53 additions & 35 deletions

File tree

scripts/daily_report.py

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -133,49 +133,57 @@ def get_github_metrics(self):
133133

134134
return {
135135
'stars': repo_data.get('stargazers_count', 0),
136-
'forks': repo_data.get('forks_count', 0),
137-
'traffic_unique': traffic_data.get('uniques', 0) if traffic_data.get('uniques', 0) > 0 else None
136+
'forks': repo_data.get('forks_count', 0)
138137
}
139138
except Exception as e:
140139
print(f"GitHub API error: {e}")
141140
return {'error': str(e)}
142141

143142
def get_discord_metrics(self):
144-
"""Get Discord server metrics using multiple approaches"""
143+
"""Get Discord server metrics with Server Members Intent enabled"""
145144
try:
146145
headers = {'Authorization': f'Bot {self.discord_bot_token}'}
147146

148-
# Try method 1: Get guild info with approximate member count
147+
# Primary method: Get guild with member counts (should work now with intent enabled)
149148
guild_url = f'https://discord.com/api/v10/guilds/{self.discord_server_id}?with_counts=true'
150149
response = requests.get(guild_url, headers=headers)
151150

152151
if response.status_code == 200:
153152
guild_data = response.json()
154-
# Try multiple fields that might contain member count
155-
member_count = (
156-
guild_data.get('approximate_member_count') or
157-
guild_data.get('member_count') or
158-
guild_data.get('members')
159-
)
160153

161-
if member_count:
154+
# Try approximate_member_count first (most reliable)
155+
member_count = guild_data.get('approximate_member_count')
156+
if member_count and member_count > 0:
157+
print(f"✅ Discord: Found {member_count} members via approximate_member_count")
162158
return {'members': member_count}
159+
160+
# Fallback to other possible fields
161+
member_count = guild_data.get('member_count')
162+
if member_count and member_count > 0:
163+
print(f"✅ Discord: Found {member_count} members via member_count")
164+
return {'members': member_count}
165+
166+
print(f"Discord guild data: {guild_data}")
167+
else:
168+
print(f"Discord API error: {response.status_code} - {response.text}")
163169

164-
# Method 2: Try to get members list (if bot has permission)
170+
# If that fails, try getting actual member list (now that we have permission)
165171
members_url = f'https://discord.com/api/v10/guilds/{self.discord_server_id}/members?limit=1000'
166172
members_response = requests.get(members_url, headers=headers)
167173

168174
if members_response.status_code == 200:
169175
members_data = members_response.json()
170-
return {'members': len(members_data)}
176+
member_count = len(members_data)
177+
print(f"✅ Discord: Counted {member_count} members from members list")
178+
return {'members': member_count}
179+
else:
180+
print(f"Discord members API error: {members_response.status_code}")
171181

172-
# Method 3: Fallback - return 0 but note the issue
173-
print(f"⚠️ Discord API responses: Guild: {response.status_code}, Members: {members_response.status_code}")
174-
return {'members': 0}
182+
return {'members': None}
175183

176184
except Exception as e:
177185
print(f"Discord API error: {e}")
178-
return {'members': 0}
186+
return {'members': None}
179187

180188
def get_reddit_metrics(self):
181189
"""Get Reddit metrics for r/BasicMemory only"""
@@ -265,15 +273,22 @@ def create_discord_embed(self, current_metrics, previous_metrics):
265273
prev_reddit = previous_metrics.get('reddit', {})
266274
prev_youtube = previous_metrics.get('youtube', {})
267275

268-
# Calculate changes
276+
# Handle Discord display
277+
if discord_data.get('members') is None:
278+
discord_display = "Bot needs permissions"
279+
else:
280+
discord_display = f"{discord_data.get('members')} members"
269281
star_change, star_dir = self.calculate_change(github_data.get('stars', 0), prev_github, 'stars')
270282
discord_change, discord_dir = self.calculate_change(discord_data.get('members', 0), prev_discord, 'members')
271283
reddit_change, reddit_dir = self.calculate_change(reddit_data.get('subreddit_members', 0), prev_reddit, 'subreddit_members')
272284
sub_change, sub_dir = self.calculate_change(youtube_data.get('subscribers', 0), prev_youtube, 'subscribers')
273285
view_change, view_dir = self.calculate_change(youtube_data.get('total_views', 0), prev_youtube, 'total_views')
274286

275-
# Traffic display logic
276-
traffic_display = "Data pending" if github_data.get('traffic_unique') is None else f"{github_data.get('traffic_unique', 0)} visitors"
287+
# Traffic display logic - GitHub traffic API is often delayed/restricted
288+
if github_data.get('traffic_unique') is None or github_data.get('traffic_unique') == 0:
289+
traffic_display = "API restricted"
290+
else:
291+
traffic_display = f"{github_data.get('traffic_unique', 0)} visitors"
277292

278293
embed = {
279294
"title": "🚀 Basic Memory Daily Traction Report",
@@ -282,29 +297,32 @@ def create_discord_embed(self, current_metrics, previous_metrics):
282297
"fields": [
283298
{
284299
"name": "⭐ GitHub",
285-
"value": f"""
286-
**Stars:** {github_data.get('stars', 'N/A')} {self.format_change(star_change, star_dir)}
287-
**Forks:** {github_data.get('forks', 'N/A')}
288-
**Traffic:** {traffic_display}
289-
""".strip(),
300+
"value": f"**Stars:** {github_data.get('stars', 'N/A')} {self.format_change(star_change, star_dir)}\n**Forks:** {github_data.get('forks', 'N/A')}",
301+
"inline": True
302+
},
303+
{
304+
"name": "\u200b", # Invisible character for spacing
305+
"value": "\u200b",
290306
"inline": True
291307
},
292308
{
293309
"name": "💬 Community",
294-
"value": f"""
295-
**Discord:** {discord_data.get('members', 'N/A')} members {self.format_change(discord_change, discord_dir)}
296-
**r/BasicMemory:** {reddit_data.get('subreddit_members', 'N/A')} {self.format_change(reddit_change, reddit_dir)}
297-
298-
""".strip(),
310+
"value": f"**Discord:** {discord_display} {self.format_change(discord_change, discord_dir)}\n**r/BasicMemory:** {reddit_data.get('subreddit_members', 'N/A')} {self.format_change(reddit_change, reddit_dir)}",
299311
"inline": True
300312
},
301313
{
302314
"name": "📺 YouTube",
303-
"value": f"""
304-
**Subscribers:** {youtube_data.get('subscribers', 'N/A')} {self.format_change(sub_change, sub_dir)}
305-
**Views:** {youtube_data.get('total_views', 'N/A')} {self.format_change(view_change, view_dir)}
306-
**Videos:** {youtube_data.get('video_count', 'N/A')}
307-
""".strip(),
315+
"value": f"**Subscribers:** {youtube_data.get('subscribers', 'N/A')} {self.format_change(sub_change, sub_dir)}\n**Views:** {youtube_data.get('total_views', 'N/A')} {self.format_change(view_change, view_dir)}\n**Videos:** {youtube_data.get('video_count', 'N/A')}",
316+
"inline": True
317+
},
318+
{
319+
"name": "\u200b", # Spacing
320+
"value": "\u200b",
321+
"inline": True
322+
},
323+
{
324+
"name": "\u200b", # Spacing
325+
"value": "\u200b",
308326
"inline": True
309327
}
310328
],

0 commit comments

Comments
 (0)