0

我正在创建一个不和谐的机器人,我正在努力弄清楚如何踢用户。我找不到这方面的代码或文档。这是代码

private void MuteUserCommand()
    {
        commands.CreateCommand("stfu")
            .Parameter("PersonToKick", ParameterType.Required)
            .Do(async (e) =>
            {
                string persontomute = e.GetArg("PersonToKick");
                if (e.User.ServerPermissions.MuteMembers == false)
                {
                    await e.Channel.SendMessage("Yoo cahnot tells " + persontomute + " to shut up, iz not enuff poweh!");
                }
                else
                {
                    await e.Channel.SendMessage("Shut up " + persontomute + "!");
                    //How do I kick persontomute here?
                }
            });
    }

更新:我正在使用 Discord.NET 0.9.6

4

2 回答 2

2

This is the command I use to kick people, checking for the correct permissions etc. (Make sure the bot has kick permissions itself ofcourse)

_client.GetService<CommandService>().CreateGroup("user", cgb =>
        {
            cgb.CreateCommand("kick")
                .Description("Kick a user from the Server.")
                .Parameter("User", ParameterType.Required)
                .AddCheck((command, user, channel) => !paused)
                .Do(async e =>
                {
                    try
                    {
                        if (e.User.ServerPermissions.KickMembers)
                        {
                            User user = null;
                            try
                            {
                                // try to find the user
                                user = e.Server.FindUsers(e.GetArg("User")).First();
                            }
                            catch (InvalidOperationException)
                            {
                                await e.Channel.SendMessage($"Couldn't kick user {e.GetArg("User")} (not found).");
                                return;
                            }
                            // double safety check
                            if (user == null) await e.Channel.SendMessage($"Couldn't kick user {e.GetArg("User")} (not found).");
                            await user.Kick();
                            await e.Channel.SendMessage($"{user.Name} was kicked from the server!");
                        }
                        else
                        {
                            await e.Channel.SendMessage($"{e.User.Name} you don't have the permission to kick.");
                        }
                    }
                    catch (Exception ex)
                    {
                        // needs a better error handling haven't changed it since i tested it xD
                        await e.Channel.SendMessage(ex.Message);
                    }
                });
于 2017-02-01T13:36:42.150 回答
1

您似乎正在使用Discord.Net。您需要从服务器获取用户,然后踢他们,如文档中所述
编辑:我的错,我从朋友的机器人那里拿了这个片段,忘记了它使用了自定义扩展。我添加了一种“香草”方式,直接取自示例机器人

var user = await _client.FindUser(e, e.Args[0], e.Args[1]); //args[0]would be the username, args[1] would be the discriminator (the random number that follows the discord id)
if (user == null) return;    
await user.Kick();

老的

string err;
User user = e.Server.Users.FindUser(persontomute, out err);
if(user != null) 
{
   await user.Kick();
   await e.Channel.SendMessage("Shut up " + persontomute + "!");
}
于 2016-11-29T16:56:36.637 回答