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