public async Task RegisterPlayer(CommandContext c, string race) { using (var session = Db.DocStore.OpenAsyncSession()) { // Check if player Exists if (await session.Advanced.ExistsAsync(c.User.Id.ToString())) { await c.RespondAsync($"{c.Member.Mention} You are already registered."); await c.RejectMessage(); return; } var raceInfo = await session.Query <Race>().FirstOrDefaultAsync(r => r.Id == $"races/{race}"); if (raceInfo == null) { await c.RejectMessage($"{c.Member.Mention} Race \"{race}\" is not valid. You can use *.info races* to get a list of races"); return; } var charClass = await session.Query <CharacterClass>().FirstOrDefaultAsync(cls => cls.Id == Realm.GetSetting <string>("startingclass")); if (charClass == null) { await c.RespondAsync($"Something went wrong while getting the startingclass (Error_StartingClassNull {Realm.GetSetting<string>("startingclass")})"); return; } var player = Realm.GetPlayerRegistration(c.Member, raceInfo, charClass); await session.StoreAsync(player); await session.SaveChangesAsync(); } var role = c.Guild.Roles.FirstOrDefault(r => r.Name == "Realm Player"); if (role == null) { await c.RejectMessage(Realm.GetMessage("missing_player_role")); return; } await c.Member.GrantRoleAsync(role, "Registered for Realm"); await c.RespondAsync($"{c.User.Mention} has joined the Realm"); await c.ConfirmMessage(); }