discord.net禁止值为null

时间:2017-10-07 04:04:35

标签: visual-studio discord discord.net

public async Task ExecuteAsync(SocketUserMessage input, string[] parameters)
{
    if (parameters.Length == 0)
    {
        parameters[0] = "Unspecified";
        return;
    }
    var allBans = await Context.Guild.GetBansAsync();
    bool isBanned = allBans.Select(b => b.User).Where(u => u.Username == Context.User.Username).Any();

    if (!isBanned)
    {
        var targetHighest = (Context.User as SocketGuildUser).Hierarchy;
        var senderHighest = (Context.User as SocketGuildUser).Hierarchy;

        if (targetHighest < senderHighest)
        {
            await Context.Guild.AddBanAsync(Context.User);
            await Context.Channel.SendMessageAsync($"**{Context.User.Username}** has been banned by Moderator {Context.User}. Reason: **{parameters}**");

            var dmChannel = await Context.User.GetOrCreateDMChannelAsync();
            await dmChannel.SendMessageAsync($"You have been banned from **{Context.Guild.Name}** by Moderator **{Context.User}** for **{parameters}**");
        }
    }
}

所以我试图制定一个禁止人的命令,但所有禁止持续获得的值。我不确定我是否写错了,或者它是否是真正的错误..

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Guild.GetBansAsync()返回在此服务器上禁止的用户列表,而不是调用者想要禁止的用户列表。

相反,您应该从来电者的留言中获取提及列表 您可以Context.Message.MentionedUser获取所提及的用户列表或
Context.Message.MentionedUserIds获取上述用户的ID列表。

最后,你可以await Guild.AddBanAsync(id/user) (禁止here的文档,您可以传入一些可选参数。)