2016-12-14 1 views
0

저는 현재 C#과 Discord.NET API를 사용하여 제 자신 만의 불화 봇을 만드는 중입니다. 그러나 문서가 제한되어 있고 한정된 시간 동안 C#으로 코딩 한 적이 있으므로, 문제가 발생했습니다.특정 사용자를 대상으로하는 방법

나는 채팅 채팅에서 봇을 종료하라는 명령을 내 렸습니다. 제 문제는 모든 사람들이 실제로이 명령을 사용하여 시스템을 종료 할 수 있다는 것입니다. 특정 사용자를 대상으로하는 방법을 모르겠습니다. 다른 사람이 명령을 사용할 때 실행되지 않습니다.

내 코드 : 사전에

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

} 

감사합니다, 나는 그 수정을 위해 유용 할 수 놓친 정보가있는 경우, 나 한테 물어. :)

이 허용 된 사람의 갈등의 ID (4 수)를 사용하여와 OK 경우
+0

명령을 실행하기 전에 사용자 ID를 확인하거나 [권한] (http://rtd.discord.foxbot.me/)을 통합하십시오. ko/legacy/features/permissions.html) – Jim

답변

0

는 다음을 사용할 수 있습니다 e.User.Id.ToString().Equals("####")

0

당신은 당신이 당신의 명령을 사용 할 수 있기를 원하여 사용자를 지정하지 않았기 때문에 오직, 당신 (봇 소유주)만이 명령을 사용할 수 있기 때문에 나는 그것을 취할 것입니다.

먼저 사용자 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 상태에서도 작동합니다.

희망 사항. 질문에 대한 답변입니다.

그것은 또한 등의 권한을 확인하기 위해 사용할 수있는
commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>) 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     }); 

당신은 변경할 수 있습니다 : HallowedFlux에 의한 대답은 좋은 반면

+0

정말 고마워요! 이것은 내가 필요한 것입니다. – HallowedFlux

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); 
     }); 
관련 문제