public async Task JoinTeam(int id) { IGuildUser user = (Context.User as IGuildUser); Player plr = _storage.Players.Find(x => x.DiscordId == user.Id); if (plr is null) { await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false); return; } Team team = _storage.Teams.Find(x => x.Id == id); if (team is null) { await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false); return; } IRole guildRole = Context.Guild.GetRole(team.RoleId); await user.AddRoleAsync(guildRole).ConfigureAwait(false); plr.TeamId = id; await Context.Channel.SendMessageAsync("", false, Embeds.PlayerJoinedTeam(user, team, Context.Guild)); }
public async Task RegisterTribe([Remainder] string tribeName) { IUser user = Context.User; Player plr = _storage.Players.Find(x => x.DiscordId == user.Id); if (plr is null) { await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false); return; } Team team = _storage.Teams.Find(x => x.Id == plr.TeamId); if (team is null) { await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false); return; } if (_storage.Teams.Any(team => team.TribeName == tribeName)) { await Context.Channel.SendMessageAsync("", false, Embeds.TribeNameAlreadyExists(tribeName)).ConfigureAwait(false); return; } team.TribeName = tribeName; await Context.Channel.SendMessageAsync("", false, Embeds.NewTribe(user, team)); }
public async Task CloseWorld() { IUser user = Context.User; Player plr = _storage.Players.Find(x => x.DiscordId == user.Id); if (plr is null) { await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false); return; } Team team = _storage.Teams.Find(x => x.Id == plr.TeamId); if (team is null) { await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false); return; } if (string.IsNullOrEmpty(team.OpenMap)) { await Context.Channel.SendMessageAsync("", false, Embeds.NoMapOpen(team)).ConfigureAwait(false); return; } await Context.Channel.SendMessageAsync("", false, Embeds.TeamClosedWorld(team)); StatusClass server = Globals.Servers.Find(x => x.MapName == team.OpenMap); server.RemoveTeamFromWhiteList(team); try { server.KickAllTeamPlayers(team).Wait(); } catch (Exception ex) { _log.Info(ex); } team.OpenMap = ""; await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams)); }
public async Task OpenWorld(string serverName) { IUser user = Context.User; Player plr = _storage.Players.Find(x => x.DiscordId == user.Id); if (plr is null) { await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false); return; } Team team = _storage.Teams.Find(x => x.Id == plr.TeamId); if (team is null) { await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false); return; } if (team.MinutesRemaining <= 0) { await Context.Channel.SendMessageAsync("", false, Embeds.TeamNoTimeLeft(team)).ConfigureAwait(false); return; } if (!string.IsNullOrEmpty(team.OpenMap)) { await Context.Channel.SendMessageAsync("", false, Embeds.MapAlreadyOpen(team)).ConfigureAwait(false); return; } if (ValidateWorldExists(serverName)) { StatusClass server = Globals.Servers.Find(x => x.Name == serverName); server.WhiteListTeam(team); team.OpenMap = server.MapName; } await Context.Channel.SendMessageAsync("", false, Embeds.TeamOpenedWorld(team)).ConfigureAwait(false); await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams)); }