Skip to content

Commit 2f25987

Browse files
Merge pull request #189 from ManagerX-Development/dev-builds/2.0.0-dashboard
Dev builds/2.0.0 dashboard
2 parents d2bb856 + 524b4c5 commit 2f25987

5 files changed

Lines changed: 38 additions & 11 deletions

File tree

src/api/dashboard/user_routes.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
@router.get("/settings")
2222
async def get_user_settings(user: dict = Depends(get_current_user)):
2323
"""Fetch user settings from SettingsDB."""
24+
from src.api.dashboard.routes import bot_instance
2425
settings_db = SettingsDB()
2526
try:
2627
user_id = int(user["id"])
@@ -75,8 +76,20 @@ async def get_user_settings(user: dict = Depends(get_current_user)):
7576
""", (user_id,))
7677
rows = cursor.fetchall()
7778
for row in rows:
79+
guild_id = row[0]
80+
guild_name = "Unknown Server"
81+
guild_icon = None
82+
83+
if bot_instance:
84+
guild = bot_instance.get_guild(guild_id)
85+
if guild:
86+
guild_name = guild.name
87+
guild_icon = guild.icon.url if guild.icon else None
88+
7889
top_servers.append({
79-
"guild_id": str(row[0]),
90+
"guild_id": str(guild_id),
91+
"name": guild_name,
92+
"icon_url": guild_icon,
8093
"level": row[1],
8194
"xp": row[2]
8295
})

src/bot/cogs/guild/loggingsystem.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,8 +924,8 @@ async def on_voice_state_update(self, member: discord.Member, before: discord.Vo
924924
changes.append(f"Server Mute: {'✅' if after.mute else '❌'}")
925925
if before.deaf != after.deaf:
926926
changes.append(f"Server Deaf: {'✅' if after.deaf else '❌'}")
927-
if before.streaming != after.streaming:
928-
changes.append(f"Streaming: {'✅' if after.streaming else '❌'}")
927+
if getattr(before, 'streaming', None) != getattr(after, 'streaming', None):
928+
changes.append(f"Streaming: {'✅' if getattr(after, 'streaming', None) else '❌'}")
929929
if before.self_video != after.self_video:
930930
changes.append(f"Camera: {'✅' if after.self_video else '❌'}")
931931

src/bot/cogs/management/autodelete.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ async def _process_channel_deletion(self, channel_id, test_mode=False):
202202

203203
deleted_count = 0
204204
error_count = 0
205-
cutoff_time = datetime.utcnow() - timedelta(seconds=duration)
205+
cutoff_time = discord.utils.utcnow() - timedelta(seconds=duration)
206206

207207
try:
208208
messages_to_delete = []
@@ -265,7 +265,7 @@ async def _bulk_delete_messages(self, channel, messages):
265265
# Trenne alte und neue Nachrichten (Discord API Limitation)
266266
old_messages = []
267267
new_messages = []
268-
two_weeks_ago = datetime.utcnow() - timedelta(days=14)
268+
two_weeks_ago = discord.utils.utcnow() - timedelta(days=14)
269269

270270
for msg in messages:
271271
if msg.created_at < two_weeks_ago:

src/bot/cogs/user/stats.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,10 @@ async def global_stats_command(
286286

287287
# Activity stats
288288
total_voice_hours = int(global_info['total_voice_minutes'] // 60)
289-
days_since_joined = (datetime.now() - datetime.fromisoformat(global_info['first_seen'])).days + 1
289+
first_seen = datetime.fromisoformat(global_info['first_seen'])
290+
if first_seen.tzinfo is None:
291+
first_seen = first_seen.replace(tzinfo=discord.utils.utcnow().tzinfo)
292+
days_since_joined = (discord.utils.utcnow() - first_seen).days + 1
290293
avg_messages_per_day = global_info['total_messages'] / days_since_joined
291294

292295
embed.add_field(

src/web/dashboard/UserSettingsPage.tsx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -375,12 +375,23 @@ export default function UserSettingsPage() {
375375
settings.topServers.map((srv: any, i: number) => (
376376
<div key={i} className="flex items-center justify-between p-4 rounded-2xl bg-white/5 border border-white/10 group hover:border-yellow-500/30 transition-colors">
377377
<div className="flex items-center gap-4">
378-
<div className="w-10 h-10 rounded-xl bg-white/5 flex items-center justify-center font-bold text-yellow-500">
379-
#{i + 1}
378+
<div className="w-12 h-12 rounded-2xl bg-white/5 flex items-center justify-center overflow-hidden border border-white/10 shadow-inner group-hover:border-yellow-500/20 transition-all">
379+
{srv.icon_url ? (
380+
<img src={srv.icon_url} alt={srv.name} className="w-full h-full object-cover" />
381+
) : (
382+
<div className="w-full h-full flex items-center justify-center font-black text-yellow-500/50 bg-yellow-500/5">
383+
{srv.name?.substring(0, 1).toUpperCase() || srv.guild_id.substring(0, 1)}
384+
</div>
385+
)}
380386
</div>
381-
<div>
382-
<p className="text-xs font-bold text-white">Server ID: {srv.guild_id}</p>
383-
<p className="text-[10px] font-bold uppercase tracking-widest text-slate-500">Level {srv.level}</p>
387+
<div className="space-y-0.5">
388+
<p className="text-sm font-bold text-white leading-tight group-hover:text-yellow-500 transition-colors">{srv.name}</p>
389+
<div className="flex items-center gap-2">
390+
<div className="px-1.5 py-0.5 rounded-md bg-white/5 border border-white/5">
391+
<p className="text-[8px] font-black uppercase tracking-tighter text-slate-500">ID: {srv.guild_id}</p>
392+
</div>
393+
<p className="text-[10px] font-bold uppercase tracking-widest text-slate-500">Level {srv.level}</p>
394+
</div>
384395
</div>
385396
</div>
386397
<div className="text-right">

0 commit comments

Comments
 (0)