fixed stuff
This commit is contained in:
parent
db6b0a996b
commit
22f59ea2ad
|
@ -155,16 +155,26 @@ class DiscordDataClient(discord.Client):
|
|||
try:
|
||||
# Get all members - discord.py-self API
|
||||
members = []
|
||||
member_iterator = await guild.fetch_members()
|
||||
async for member in member_iterator:
|
||||
member_result = await guild.fetch_members()
|
||||
|
||||
# Handle different return types from fetch_members
|
||||
if hasattr(member_result, '__aiter__'):
|
||||
# It's an async iterator
|
||||
async for member in member_result:
|
||||
members.append(member)
|
||||
elif isinstance(member_result, list):
|
||||
# It's already a list
|
||||
members = member_result
|
||||
else:
|
||||
# Try to iterate over it
|
||||
for member in member_result:
|
||||
members.append(member)
|
||||
|
||||
for member in members:
|
||||
if not member.bot:
|
||||
await self._process_user(member, guild.id)
|
||||
|
||||
# Rate limiting
|
||||
# Rate limiting before processing
|
||||
await self.rate_limiter.wait()
|
||||
await self._process_user(member, guild.id)
|
||||
|
||||
self.logger.info(f"Processed {len(members)} members from {guild.name}")
|
||||
|
||||
|
@ -224,6 +234,9 @@ class DiscordDataClient(discord.Client):
|
|||
async def _get_mutual_guilds(self, user) -> List[int]:
|
||||
"""Get mutual guilds for a user using fetch_user_profile."""
|
||||
try:
|
||||
# Rate limiting before API call
|
||||
await self.rate_limiter.wait()
|
||||
|
||||
# Use fetch_user_profile to get mutual guilds
|
||||
profile = await self.fetch_user_profile(user.id, with_mutual_guilds=True)
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import json
|
|||
import shutil
|
||||
from datetime import datetime
|
||||
from typing import Dict, List, Optional, Any
|
||||
from dataclasses import dataclass, asdict
|
||||
from dataclasses import dataclass, asdict, field
|
||||
from pathlib import Path
|
||||
import logging
|
||||
|
||||
|
@ -35,13 +35,11 @@ class UserData:
|
|||
bio: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
activity: Optional[str] = None
|
||||
servers: List[int] = None
|
||||
servers: List[int] = field(default_factory=list)
|
||||
created_at: datetime = None
|
||||
updated_at: datetime = None
|
||||
|
||||
def __post_init__(self):
|
||||
if self.servers is None:
|
||||
self.servers = []
|
||||
current_time = datetime.utcnow()
|
||||
if self.created_at is None:
|
||||
self.created_at = current_time
|
||||
|
@ -458,6 +456,7 @@ class MariaDBDatabase:
|
|||
|
||||
async def save_server(self, server_id: int, server_name: str):
|
||||
"""Save server information."""
|
||||
async with self._lock:
|
||||
async with self.pool.cursor() as cursor:
|
||||
await cursor.execute("""
|
||||
INSERT INTO servers (server_id, server_name)
|
||||
|
@ -472,6 +471,7 @@ class MariaDBDatabase:
|
|||
if not server_ids:
|
||||
return {}
|
||||
|
||||
async with self._lock:
|
||||
async with self.pool.cursor() as cursor:
|
||||
placeholders = ','.join(['%s'] * len(server_ids))
|
||||
await cursor.execute(f"""
|
||||
|
@ -485,6 +485,7 @@ class MariaDBDatabase:
|
|||
|
||||
async def add_server_to_user(self, user_id: int, server_id: int):
|
||||
"""Add a server to user's server list."""
|
||||
async with self._lock:
|
||||
async with self.pool.cursor() as cursor:
|
||||
await cursor.execute("""
|
||||
INSERT IGNORE INTO user_servers (user_id, server_id)
|
||||
|
|
Loading…
Reference in a new issue