0

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

我已经从 Discord 聊天中发出了关闭机器人的命令,我的问题是每个人实际上都可以使用这个命令来关闭它,我不知道如何针对特定用户,这样它就不会当其他人使用该命令时执行。

我的代码:

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

}

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

4

3 回答 3

1

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

首先,去不和谐地复制你的用户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情况。

希望这能回答你的问题。

于 2017-01-16T12:01:16.327 回答
0

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

于 2017-01-14T23:37:12.513 回答
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);
        });
于 2017-02-01T13:23:29.703 回答