如何定位特定用户

时间:2016-12-14 08:29:26

标签: c# exit targeting discord.net

我目前正在使用C#和Discord.NET API制作我自己的discord bot,但由于文档有限,并且我只在有限的时间内使用C#进行编码,因此我不能使用C#和Discord.NET API。我遇到了一个问题。

我已经发出命令从Discord聊天中关闭僵尸程序,我的问题是每个人都可以使用此命令将其关闭,我不知道如何定位特定用户以便当其他人使用该命令时,它不会被执行。

我的代码:

private void RegisterShutdownCommand()
{
    commands.CreateCommand("exit")
        .Do((e) =>
            {
                Environment.Exit(0);
            });

}

在此先感谢,如果有任何我错过的信息可能对修复有用,请问我。 :)

3 个答案:

答案 0 :(得分:0)

如果您可以使用允许的人的不和谐ID(4个号码),那么您可以使用: nil

答案 1 :(得分:0)

由于您没有指定您希望只能使用命令的人,我会认为只有您(机器人所有者)才能使用该命令。

首先,请在discord中复制您的用户ID。您可以通过右键单击不和谐中的姓名并单击“复制ID”来执行此操作:http://prnt.sc/dw9zcw [确保您已启用开发者模式以便执行此操作]

然后你可以试试这个:

    private void RegisterShutdownCommand()
{
    commands.CreateCommand("exit")
        .Do((e) =>
            {
                if (e.User.Id != <Your_User_ID>)
                {
                    /*Code to execute when its not the owner.*/
                }
                else
                {
                    Environment.Exit(0);
                }
            });

}

基本上只需使用if-else语句来检查discord中用户的ID是否为所有者。 或者,@chessburgur建议的也适用于if条件。

希望这能回答你的问题。

答案 2 :(得分:0)

虽然HallowedFlux的答案很好,但你应该把它改成这样的东西(干净的代码+易于重用):

commands.CreateCommand("exit")
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>)
    .Do((e) =>
        {
            Environment.Exit(0);
        });

它也可以用于检查权限等。你可以改变它以向聊天发送消息,如果需要的话也是如此:

commands.CreateCommand("exit")
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>, "Only the owner can use this command!")
    .Do((e) =>
        {
            Environment.Exit(0);
        });