Modification to send_discord_alert function so it can mention users if they're in the server and have their account linked

This commit is contained in:
Jamon 2024-08-10 11:12:59 +12:00
parent fd8f3b813a
commit a0356105d7

View File

@ -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...")