【问题标题】:How to target a specific user如何定位特定用户
【发布时间】:2017-02-01 21:30:32
【问题描述】:

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

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

我的代码:

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

}

提前致谢,如果我遗漏了任何可能对修复有用的信息,请询问我。 :)

【问题讨论】:

  • 您可以在执行命令之前检查用户ID或集成permissions

标签: c# exit targeting discord.net


【解决方案1】:

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

首先,不和谐地复制您的用户 ID。您可以通过在 discord 中右键单击您的姓名并单击“复制 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 条件。

希望这能回答你的问题。

【讨论】:

  • 非常感谢!这正是我所需要的。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    虽然 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);
            });
    

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2011-12-15
      • 2022-09-28
      • 1970-01-01
      • 2023-03-25
      • 2022-12-01
      • 2020-08-20
      相关资源
      最近更新 更多