@@ -148,49 +148,73 @@ def get_github_metrics(self):
148148 return {'error' : str (e )}
149149
150150 def get_discord_metrics (self ):
151- """Get Discord server metrics with Server Members Intent enabled """
151+ """Get Discord server metrics with detailed debugging """
152152 try :
153153 headers = {'Authorization' : f'Bot { self .discord_bot_token } ' }
154+ print (f"🔍 Discord Debug: Using server ID { self .discord_server_id } " )
155+ print (f"🔍 Discord Debug: Bot token starts with { self .discord_bot_token [:20 ]} ..." )
154156
155- # Primary method: Get guild with member counts (should work now with intent enabled)
156- guild_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } ?with_counts=true'
157- response = requests .get (guild_url , headers = headers )
157+ # Method 1: Basic guild info
158+ basic_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } '
159+ basic_response = requests .get (basic_url , headers = headers )
160+ print (f"🔍 Basic guild API: { basic_response .status_code } " )
158161
159- if response .status_code == 200 :
160- guild_data = response .json ()
162+ if basic_response .status_code == 200 :
163+ basic_data = basic_response .json ()
164+ print (f"🔍 Basic guild data keys: { list (basic_data .keys ())} " )
165+ print (f"🔍 Guild name: { basic_data .get ('name' , 'Unknown' )} " )
166+ else :
167+ print (f"🔍 Basic guild error: { basic_response .text } " )
168+
169+ # Method 2: Guild with counts
170+ counts_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } ?with_counts=true'
171+ counts_response = requests .get (counts_url , headers = headers )
172+ print (f"🔍 Counts API: { counts_response .status_code } " )
173+
174+ if counts_response .status_code == 200 :
175+ counts_data = counts_response .json ()
176+ print (f"🔍 Counts data keys: { list (counts_data .keys ())} " )
161177
162- # Try approximate_member_count first (most reliable)
163- member_count = guild_data .get ('approximate_member_count' )
164- if member_count and member_count > 0 :
165- print (f"✅ Discord: Found { member_count } members via approximate_member_count" )
166- return { 'members' : member_count }
178+ # Check all possible member count fields
179+ approximate_member_count = counts_data .get ('approximate_member_count' )
180+ member_count = counts_data . get ( ' member_count' )
181+ print (f"🔍 approximate_member_count: { approximate_member_count } " )
182+ print ( f"🔍 member_count: { member_count } " )
167183
168- # Fallback to other possible fields
169- member_count = guild_data .get ('member_count' )
170- if member_count and member_count > 0 :
171- print (f"✅ Discord: Found { member_count } members via member_count" )
184+ if approximate_member_count :
185+ print (f"✅ Discord: Using approximate_member_count = { approximate_member_count } " )
186+ return {'members' : approximate_member_count }
187+ elif member_count :
188+ print (f"✅ Discord: Using member_count = { member_count } " )
172189 return {'members' : member_count }
173-
174- print (f"Discord guild data: { guild_data } " )
175190 else :
176- print (f"Discord API error: { response . status_code } - { response .text } " )
191+ print (f"🔍 Counts error: { counts_response .text } " )
177192
178- # If that fails, try getting actual member list (now that we have permission )
179- members_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } /members?limit=1000 '
193+ # Method 3: Try to get actual members (this might fail but let's see the error )
194+ members_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } /members?limit=10 '
180195 members_response = requests .get (members_url , headers = headers )
196+ print (f"🔍 Members API: { members_response .status_code } " )
181197
182198 if members_response .status_code == 200 :
183199 members_data = members_response .json ()
184- member_count = len (members_data )
185- print (f"✅ Discord: Counted { member_count } members from members list" )
186- return {'members' : member_count }
200+ print (f"🔍 Got { len (members_data )} members from members endpoint" )
201+
202+ # Get full count by pagination (if this works)
203+ full_members_url = f'https://discord.com/api/v10/guilds/{ self .discord_server_id } /members?limit=1000'
204+ full_response = requests .get (full_members_url , headers = headers )
205+ if full_response .status_code == 200 :
206+ full_data = full_response .json ()
207+ member_count = len (full_data )
208+ print (f"✅ Discord: Counted { member_count } members from full list" )
209+ return {'members' : member_count }
187210 else :
188- print (f"Discord members API error: { members_response .status_code } " )
211+ print (f"🔍 Members error: { members_response .text } " )
189212
213+ print ("❌ Discord: All methods failed" )
190214 return {'members' : None }
191215
192216 except Exception as e :
193- print (f"Discord API error : { e } " )
217+ print (f"💥 Discord API exception : { e } " )
194218 return {'members' : None }
195219
196220 def get_reddit_metrics (self ):
@@ -302,52 +326,37 @@ def create_discord_embed(self, current_metrics, previous_metrics):
302326
303327 embed = {
304328 "title" : "🚀 Basic Memory Daily Traction Report" ,
305- "description" : f"📅 { datetime .now ().strftime ('%A, %B %d, %Y' )} " ,
329+ "description" : f"{ datetime .now ().strftime ('%A, %B %d, %Y' )} " ,
306330 "color" : 0x00ff88 ,
307331 "fields" : [
308332 {
309333 "name" : "⭐ GitHub" ,
310- "value" : f"**Stars:** { github_data .get ('stars' , 'N/A' )} { self .format_change (star_change , star_dir )} \n **Forks:** { github_data .get ('forks' , 'N/A' )} " ,
311- "inline" : True
312- },
313- {
314- "name" : "\u200b " , # Invisible character for spacing
315- "value" : "\u200b " ,
316- "inline" : True
334+ "value" : f"**Stars:** { github_data .get ('stars' , 'N/A' )} { self .format_change (star_change , star_dir )} \n **Forks:** { github_data .get ('forks' , 'N/A' )} { self .format_change (fork_change , fork_dir )} " ,
335+ "inline" : False
317336 },
318337 {
319338 "name" : "💬 Community" ,
320- "value" : f"**Discord:** { discord_display } { discord_change_display } \n ** r/BasicMemory:** { reddit_data .get ('subreddit_members' , 'N/A' )} { self .format_change (reddit_change , reddit_dir )} " ,
321- "inline" : True
339+ "value" : f"**r/BasicMemory:** { reddit_data .get ('subreddit_members' , 'N/A' )} { self .format_change (reddit_change , reddit_dir )} members " ,
340+ "inline" : False
322341 },
323342 {
324343 "name" : "📺 YouTube" ,
325344 "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' )} " ,
326- "inline" : True
327- },
328- {
329- "name" : "\u200b " , # Spacing
330- "value" : "\u200b " ,
331- "inline" : True
332- },
333- {
334- "name" : "\u200b " , # Spacing
335- "value" : "\u200b " ,
336- "inline" : True
345+ "inline" : False
337346 }
338347 ],
339348 "footer" : {
340- "text" : f"🤖 Automated by Basic Memory"
349+ "text" : f"Thanks for making Basic Memory great! 🏆 "
341350 },
342351 "timestamp" : datetime .now ().isoformat ()
343352 }
344353
345354 # Add daily highlight if there's significant growth
346355 highlights = []
347- if discord_change > 5 :
348- highlights .append (f"Discord gained { discord_change } new members!" )
349- if star_change > 10 :
356+ if star_change > 5 :
350357 highlights .append (f"GitHub stars up { star_change } !" )
358+ if reddit_change > 2 :
359+ highlights .append (f"r/BasicMemory gained { reddit_change } members!" )
351360 if sub_change > 0 :
352361 highlights .append (f"YouTube gained { sub_change } subscribers!" )
353362
0 commit comments