public async Task <Result <FeedbackMessage> > InvitePlayerAsync ( IUser playerToInvite, [RequireEntityOwner] [AutocompleteProvider("roleplay::owned")] Roleplay roleplay ) { var invitePlayerResult = await _discordRoleplays.InviteUserToRoleplayAsync(roleplay, playerToInvite.ID); if (!invitePlayerResult.IsSuccess) { return(Result <FeedbackMessage> .FromError(invitePlayerResult)); } var roleplayName = roleplay.Name.Contains(' ') ? roleplay.Name.Quote() : roleplay.Name; var message = new Embed { Colour = _feedback.Theme.Secondary, Description = $"You've been invited to join {roleplay.Name}. Use `!rp join {roleplayName}` to join." }; var send = await _feedback.SendPrivateEmbedAsync(playerToInvite.ID, message); if (!send.IsSuccess) { return(Result <FeedbackMessage> .FromError(send)); } return(new FeedbackMessage ( $"Invited <@{playerToInvite.ID}> to {roleplay.Name}.", _feedback.Theme.Secondary )); }
public async Task <RuntimeResult> InvitePlayerAsync ( IGuildUser playerToInvite, [RequireEntityOwnerOrPermission(typeof(EditRoleplay), PermissionTarget.Other)] Roleplay roleplay ) { var invitePlayerResult = await _discordRoleplays.InviteUserToRoleplayAsync(roleplay, playerToInvite); if (!invitePlayerResult.IsSuccess) { return(invitePlayerResult.ToRuntimeResult()); } var userDMChannel = await playerToInvite.GetOrCreateDMChannelAsync(); try { var roleplayName = roleplay.Name.Contains(" ") ? roleplay.Name.Quote() : roleplay.Name; await userDMChannel.SendMessageAsync ( $"You've been invited to join {roleplay.Name}. Use `!rp join {roleplayName}` to join." ); } catch (HttpException hex) when(hex.WasCausedByDMsNotAccepted()) { } finally { await userDMChannel.CloseAsync(); } return(RuntimeCommandResult.FromSuccess ( $"Invited {playerToInvite.Mention} to {roleplay.Name}." )); }
public async Task InvitePlayerAsync ( IGuildUser playerToInvite, [RequireEntityOwnerOrPermission(typeof(EditRoleplay), PermissionTarget.Other)] Roleplay roleplay ) { var invitePlayerResult = await _discordRoleplays.InviteUserToRoleplayAsync(roleplay, playerToInvite); if (!invitePlayerResult.IsSuccess) { await _feedback.SendErrorAsync(this.Context, invitePlayerResult.ErrorReason); return; } await _feedback.SendConfirmationAsync(this.Context, $"Invited {playerToInvite.Mention} to {roleplay.Name}."); var userDMChannel = await playerToInvite.GetOrCreateDMChannelAsync(); try { var roleplayName = roleplay.Name.Contains(" ") ? roleplay.Name.Quote() : roleplay.Name; await userDMChannel.SendMessageAsync ( $"You've been invited to join {roleplay.Name}. Use `!rp join {roleplayName}` to join." ); } catch (HttpException hex) when(hex.WasCausedByDMsNotAccepted()) { } finally { await userDMChannel.CloseAsync(); } }