Я хочу сделать Context.Message.Author значением по умолчанию для SocketGuildUser в Discord.NET, но он выдает ошибку CS1736 - PullRequest
0 голосов
/ 25 марта 2019

При задании Context.Message.Author в качестве значения по умолчанию SocketGuildUser выдает ошибку CS1736 (выражение, назначаемое необязательному параметру 'user', должно быть константой или значением по умолчанию). Вот мой код:

    [Command("whois")]
    [Alias("userinfo")]
    public async Task userinfo(SocketGuildUser user = Context.Message.Author)
    {
        var embed = new EmbedBuilder();
        embed.WithTitle("Info of " + "<@" + user.Id + ">");
        embed.WithDescription(
            "Status: " + user.Status + newline +
            "Joined: " + user.JoinedAt + newline +
            "Registered: " + user.CreatedAt + newline + newline +
            "Roles: " + user.Roles + newline +
            "Key permissions: " + user.GuildPermissions + newline + newline +
            "Voice channel: " + user.VoiceChannel + newline +
            "Voice session ID: " + user.VoiceSessionId + newline +
            "Voice state: " + user.VoiceState
                            );
        embed.WithThumbnailUrl(user.GetAvatarUrl());

        embed.WithFooter("If you think that this is a bit too many info, dm me: Dawid#3216 or join support server: https://discord.gg/E27bFsW");
        embed.WithCurrentTimestamp();

        embed.WithColor(new Color(25, 25, 255));
        ;
        await Context.Channel.SendMessageAsync("", false, embed);
    }

1 Ответ

1 голос
/ 26 марта 2019

Я бы посоветовал что-то вроде этого:

public async Task UserInfo([Summary("The (optional) user to get info for")] IUser user = null)
{
    var userInfo = user ?? Context.User;
    //SOME CODE
}

Если команда получает пользователя, отобразить информацию о нем.В противном случае (если ноль) это Context.User

...