Пинок пользователя в Discord.Net - PullRequest
0 голосов
/ 13 декабря 2018

Я сделал этот код, чтобы выгнать пользователя из гильдии сервера разногласий

Консоль бота не выдает мне ошибок, но этот код не работает должным образом, когда я пытаюсь выгнать пользователя,Под этим я подразумеваю, что он не пинает пользователя и ничего не выводит на канал.

Я также проверил разрешения для ботов и обновил их, чтобы это не могло быть проблемой..

Версия discord.net: 1.0.2

    [Command("kick"), Alias("Kick"), Summary("Kicks a user from the server")]
    public async Task Kick(SocketGuildUser userAccount, string reason)
    {
        var user = Context.User as SocketGuildUser;
        var role = (user as IGuildUser).Guild.Roles.FirstOrDefault(x => x.Name == "Admin");
        if (!userAccount.Roles.Contains(role))
        {
            if (user.GuildPermissions.KickMembers)
            {
                await userAccount.KickAsync(reason);
                await Context.Channel.SendMessageAsync($"The user `{userAccount}` has been kicked, for {reason}");
            }
            else
            {
                await Context.Channel.SendMessageAsync("No permissions for kicking a user.");
            }
        }
        else
        {
            await Context.Channel.SendMessageAsync("This User can't be kicked, because the user has a admin role.");
        }
    }

Ответы [ 2 ]

0 голосов
/ 16 августа 2019
[Command("kick")]
[RequireBotPermission(GuildPermission.KickMembers)]
public async Task KickAsync(IGuildUser user)
{

    var GuildUser = Context.Guild.GetUser(Context.User.Id);

    if (!GuildUser.GuildPermissions.KickMembers)
    {
        await Context.Message.DeleteAsync();
        await ReplyAsync(":warning: `No permissions to kick players`");
        return;
    }
    else
    {
        await user.KickAsync();
        await Context.Channel.SendMessageAsync($":eye: `{user.Username} has been kicked from the server`");

        var guild = Context.Guild;
        var channel = guild.GetTextChannel(609086251978457098); //582790350620327952

        EmbedBuilder builder = new EmbedBuilder();

        builder.WithTitle("Logged Information")
            .AddField("User", $"{user.Mention}")
            .AddField("Moderator", $"{Context.User.Username}")
            .AddField("Other Information", "Can be invited back")
            .AddField("Command", $"``.kick {user.Username}``")
            .WithDescription($"This player has been kicked from {Context.Guild.Name} by {Context.User.Username}")
            .WithFooter($"{Context.User.Username}", Context.User.GetAvatarUrl())

            .WithCurrentTimestamp()
            .WithColor(new Color(54, 57, 62));
    }
}
0 голосов
/ 17 декабря 2018

Я понял, что вместо

async Task Kick(SocketGuildUser userAccount, string reason)

мне нужно было использовать

async Task Kick(IGuildUser userAccount, string reason)
...