public async Task Invite([Summary("List of users to invite, separated by spaces.")][Remainder] string invites) { ulong raidMessageId = Context.Message.Reference.MessageId.Value; SocketUserMessage raidMessage = (SocketUserMessage)await Context.Channel.GetMessageAsync(raidMessageId); RaidParent parent = raidMessages[raidMessageId]; if (parent.IsInRaid((SocketGuildUser)Context.Message.Author, false) != Global.NOT_IN_RAID) { if (!parent.HasActiveInvite()) { parent.InvitingPlayer = (SocketGuildUser)Context.Message.Author; List <string> inviteList = invites.Split(' ').ToList(); inviteList.RemoveAll(x => x.StartsWith("<@", StringComparison.OrdinalIgnoreCase)); List <SocketUser> mentioned = Context.Message.MentionedUsers.ToList(); bool failedInvites = false; foreach (string openInvite in inviteList) { SocketGuildUser invite = Context.Guild.Users.FirstOrDefault(x => x.Username.Equals(openInvite, StringComparison.OrdinalIgnoreCase) || ( x.Nickname != null && x.Nickname.Equals(openInvite, StringComparison.OrdinalIgnoreCase))); if (invite != null && !mentioned.Contains(invite)) { mentioned.Add(invite); } else { failedInvites = true; } } foreach (SocketUser invite in mentioned) { if (parent.InvitePlayer((SocketGuildUser)invite, parent.InvitingPlayer)) { await invite.SendMessageAsync($"You have been invited to a raid by {parent.InvitingPlayer.Nickname ?? parent.InvitingPlayer.Username}."); } else { failedInvites = true; } } if (failedInvites) { await ResponseMessage.SendWarningMessage(Context.Channel, "invite", "Some users where not found to be invited"); } await ModifyMessage(raidMessage, parent); parent.InvitingPlayer = null; } } await Context.Message.DeleteAsync(); }