如何以特定用户为目标
我目前正在使用C#和Discord.NET API制作我自己的不和谐bot,但由于文档有限,并且我只在C#中进行了有限时间的编码,我遇到了一个问题。如何以特定用户为目标
我已经命令关闭从Discord聊天内部的机器人,我的问题是,每个人都可以真正使用此命令关闭它,我不知道如何定位特定用户,以便它当其他人使用该命令时不会被执行。
我的代码:提前
private void RegisterShutdownCommand()
{
commands.CreateCommand("exit")
.Do((e) =>
{
Environment.Exit(0);
});
}
谢谢,如果我错过了可以为修复是有用的任何信息,问我。 :)
如果您使用允许的人的不和谐ID(4号)OK,那么你可以使用: e.User.Id.ToString().Equals("####")
既然你没有指定你希望能够使用你的命令,你的谁只有,我会认为只有你(机器人所有者)能够使用该命令。
首先,去复制你的用户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
条件。
希望这回答你的问题。
非常感谢!这正是我所需要的。 – HallowedFlux
虽然通过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);
});
您可以在执行命令或集成[permissions]之前检查用户标识(http://rtd.discord.foxbot.me/ en/legacy/features/permissions.html) – Jim