Как настроить таргетинг на конкретного пользователя

В настоящее время я занимаюсь созданием собственного бота Discord с использованием C # и Discord.NET API, но, поскольку документация ограничена, и я только кодировал на C # в течение ограниченного времени, я столкнулся с проблемой.

Я сделал команду для выключения бота из чата Discord, моя проблема в том, что каждый может использовать эту команду, чтобы выключить его, и я понятия не имею, как настроить таргетинг на конкретного пользователя, чтобы он не был выполняется, когда кто-то другой использует команду.

Мой код:

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

}

Заранее спасибо, если есть какая-то информация, которую я пропустил, которая может быть полезна для исправления, спросите меня. :)


person HallowedFlux    schedule 14.12.2016    source источник
comment
Вы можете просто проверить идентификатор пользователя перед выполнением команды или интегрировать разрешения   -  person Jim    schedule 15.12.2016


Ответы (3)


Поскольку вы не указали, кому вы хотите иметь возможность использовать только свои команды, я буду считать, что только вы (владелец бота) можете использовать команду.

Во-первых, скопируйте свой идентификатор пользователя в Discord. Вы можете сделать это, щелкнув правой кнопкой мыши свое имя в Discord и выбрав «идентификатор копии»: 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 владельцем. В качестве альтернативы то, что предложил @chessburgur, также работает в условии if.

Надеюсь, что это ответ на ваш вопрос.

person Kaynn    schedule 16.01.2017
comment
Большое спасибо! это было именно то, что мне нужно. - person HallowedFlux; 24.01.2017

Если вы согласны с использованием идентификатора разногласий разрешенного человека (4 числа), вы можете использовать: e.User.Id.ToString().Equals("####")

person cheeseburgur101    schedule 14.01.2017

Хотя ответ 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);
        });
person TomJ    schedule 01.02.2017