我目前正在使用C#和Discord.NET API制作我自己的discord bot,但由于文档有限,并且我只在有限的时间内使用C#进行编码,因此我不能使用C#和Discord.NET API。我遇到了一个问题。
我已经发出命令从Discord聊天中关闭僵尸程序,我的问题是每个人都可以使用此命令将其关闭,我不知道如何定位特定用户以便当其他人使用该命令时,它不会被执行。
我的代码:
private void RegisterShutdownCommand()
{
commands.CreateCommand("exit")
.Do((e) =>
{
Environment.Exit(0);
});
}
在此先感谢,如果有任何我错过的信息可能对修复有用,请问我。 :)
答案 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);
});