2016-12-14 60 views
0

我目前正在使用C#和Discord.NET API制作我自己的不和谐bot,但由于文档有限,并且我只在C#中进行了有限时间的编码,我遇到了一个问题。如何以特定用户为目标

我已经命令关闭从Discord聊天内部的机器人,我的问题是,每个人都可以真正使用此命令关闭它,我不知道如何定位特定用户,以便它当其他人使用该命令时不会被执行。

我的代码:提前

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

} 

谢谢,如果我错过了可以为修复是有用的任何信息,问我。 :)

+0

您可以在执行命令或集成[permissions]之前检查用户标识(http://rtd.discord.foxbot.me/ en/legacy/features/permissions.html) – Jim

回答

0

如果您使用允许的人的不和谐ID(4号)OK,那么你可以使用: e.User.Id.ToString().Equals("####")

0

既然你没有指定你希望能够使用你的命令,你的谁只有,我会认为只有你(机器人所有者)能够使用该命令。

首先,去复制你的用户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语句来检查用户的ID是否是所有者。 或者,@chessburgur建议的内容也适用于if条件。

希望这回答你的问题。

+0

非常感谢!这正是我所需要的。 – HallowedFlux

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); 
     }); 
相关问题