2016-12-14 15 views
0

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

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

Мой код:

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

} 

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

+0

Вы можете эфиру проверить идентификатор пользователя перед выполнением команды или интегрировать [разрешения] (http://rtd.discord.foxbot.me/ ru/legacy/features/permissions.html) – Jim

ответ

0

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

0

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

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

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

+0

Большое вам спасибо! это было именно то, что мне нужно. – HallowedFlux

0

Хотя ответ на HallowedFlux хорошо, вы должны изменить его вокруг что-то вроде этого (чистый код + легкий для повторного использования):

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>) 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     }); 

Он также может быть использован для проверки прав доступа и т.д. Вы можете изменить это отправить сообщение в чате Aswell, если это необходимо, так как:

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>, "Only the owner can use this command!") 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     });