2017-09-29 7 views
0

봇이 개인적인 메시지에서 역할을 얻을 수 없습니다!개인 메시지에서 역할을 수집하는 방법이 있습니까?

누군가 메시징 회원의 ID에 대해 특정 길드를 검색하고 이들에게 역할이 있는지 확인하는 방법을 아는 사람이 있습니까?

const Discord = require("Discord.js"); 
const client = new Discord.Client(); 

botKey = "---"; 
adminRole = "---"; 

bot.login(botKey); 
bot.on("ready",() => { 
    console.log("Bot: Ready!"); 
}); 
client.on('message', message => { 
    if(message.member.roles.has(adminRole)){ 
    console.log(your role is Admin!); 
    } 
}); 

답변

1

이 작업을 수행하려면 길드 ID가 필요합니다 : 여기

은 오후에서 작동하지 않는 코드의 예입니다. 사용자가 길드 ID를 언급하거나 어딘가에 저장할 수 있습니다. 그렇지 않으면 사용자가 길드 이름을 언급하게 할 수 있습니다.

그런 다음 봇이 연결되어있는 길드 목록을 Client.Guilds으로 가져 오면 Collection<Snowflake, Guilds>을 반환합니다. 루프를 반복하거나 find() 메서드를 사용할 수 있습니다.
길드 이름을 기반으로 찾을 경우 컬렉션의 각 길드 이름과 비교할 추가 단계가 있음에 유의하십시오.
(당신이 그것을 통해 반복되는 경우 봇은 길드의 많은에 연결되어있는 경우, 작업이 더 길어질 수 있습니다. 또한, 당신은 Client.Guilds 재산 here을 확인할 수 있습니다.)

길드가 있으면, 간단하게 GuildMember를 가져 원하는 사람의 속성. 그냥 Guild.member(message.author)을 해보면 길드 관련 속성을 가진 방금 너에게 메시지 한 사람의 비슷한 속성을 가진 길드 멤버가 반환됩니다.

여기에서 GuildMember.roles으로 모든 사람의 길드 역할에 액세스하거나 특정 권한이 있는지 확인하려는 경우 GuildMember.hasPermission() 방법이 있습니다.
(문서 번호 GuildMemberhere입니다.)

+0

감사합니다. 나는 아직도 나 자신을 배우고 있는데,이 대답은 그 과정을 이해하는 데 도움이된다. 봇은 1 대의 서버에서만 작동하지만 어디서부터 시작해야할지 모르겠고 discord.js.org가 매우 유용하다는 것을 알지 못합니다. 또는 정보를 읽는 방법을 모르겠습니다. 관심이 있으시면이 문제를 해결하는 과정을 이해하도록 도와 주시겠습니까? 이 작업을 수행하는 방법을 배우고 싶습니다. – TheBloodSeeker005

+0

@ TheBloodSeeker005 기꺼이 도와 드리겠습니다 (이메일 주소로 내 프로필을 확인하십시오). 그건 그렇고 불화에 예가 있습니다 .JS 문서에 코드 주석이 붙어 있습니다. 당신이 그 예제를 이해하지 못한다면, 나는 자바 스크립트에 대해 더 많이 배워야한다고 제안한다. (주로 비동기식입니다.) – WQYeo

+0

좋아요, 이메일을 보내 드리겠습니다. 어쩌면 예제를 찾을 수 없었을 것입니다. – TheBloodSeeker005