From a0356105d71d8ce5bb9ea8bceddac0343928243b Mon Sep 17 00:00:00 2001 From: Jamon Date: Sat, 10 Aug 2024 11:12:59 +1200 Subject: [PATCH] Modification to send_discord_alert function so it can mention users if they're in the server and have their account linked --- game_server.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/game_server.py b/game_server.py index d6f7687..ff81f3d 100644 --- a/game_server.py +++ b/game_server.py @@ -102,6 +102,8 @@ def award_achievement(user_id, achievement_id): {'_id': ObjectId(user_id)}, {'$push': {'achievements': achievement_id}} ) + + send_discord_alert(f"🏆 Player {user['username']} has earned the '{achievement['name']}' achievement!", user['username']) # Check for classes to unlock classes_to_unlock = list(classes_collection.find({'unlock_requirements.achievement': achievement_id})) @@ -116,7 +118,12 @@ def award_achievement(user_id, achievement_id): return False -def send_discord_alert(message): +def send_discord_alert(message, username=None): + if username: + user = users_collection.find_one({'username': username}) + if user and 'discord_id' in user: + message = message.replace(username, f"{username} <@{user['discord_id']}>") + data = { "content": message } @@ -968,7 +975,7 @@ def on_disconnect(): del game_state['players'][player_id] active_players.discard(username) socketio.emit('player_disconnected', player_id, to=main_room) - send_discord_alert(f"👋 Player {username} has disconnected!") + send_discord_alert(f"👋 Player {username} has disconnected!", username) print(f"Player {player_id} disconnected") active_sockets_collection.delete_one({'_id': player_id}) @@ -1077,7 +1084,7 @@ def on_join(data): 'serverTime': time.time(), 'songDuration': music_player.get_current_song_duration() }) - send_discord_alert(f"👋 Player {username} has joined the game!") + send_discord_alert(f"👋 Player {username} has joined the game!", username) print(f"Player {username} (ID: {player_id}) joined the game") except Exception as e: @@ -1251,6 +1258,9 @@ def add_experience(player, amount): # Generate upgrade options and store them player_id = next(pid for pid, p in game_state['players'].items() if p == player) game_state['player_upgrade_options'][player_id] = get_random_upgrades(3) + if player.level % 5 == 0: + send_discord_alert(f"🎉 Player {player.name} has reached level {player.level}!", player.name) + return True return False @@ -1914,6 +1924,7 @@ if __name__ == '__main__': socketio.run(app, host='0.0.0.0', port=443, ssl_context=ssl_context) except KeyboardInterrupt: logging.info("Server shutting down...") + send_discord_alert("🚀 Resonance Rumble is shutting down!") finally: # Perform cleanup logging.info("Cleaning up resources...")