Пример #1
0
    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}."
                   ));
        }
Пример #3
0
        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();
            }
        }