[discordjs] DM에 메시지를 보내고 싶어요!
5879 단어 discord.jstech
discordjs:11.6.4
전언
discord.js로 디스코드봇을 제작했지만, 리메더로 DM에 보내고 싶어 시행해 봤습니다.
이 사이트는 아래의 사이트를 참고하였다.따라서 discordjs 버전을 사용하는 것은 비교적 낮다.최신discordjs를 사용할 때 규격이 다를 수 있습니다.
누구나 할 수 있는 discordbot 초급편
그 전에
상호작용 형식인bot은 사용자 쪽에서 평론하고 답장하는 시스템을 제작한 경우 답장 서버의 채널과 같은 형식의 코드를 사용할 수 있다.
상기 참고 사이트의 아래 부분
function sendMsg(channelId, text, option={}){
client.channels.get(channelId).send(text, option)
.then(console.log("メッセージ送信: " + text + JSON.stringify(option)))
.catch(console.error);
}
하는 일은 채널을 찾아 그곳에 보내는 것이지만 DM이 한 번 보내면 channnels.get
DM을 받을 수 있기 때문에 직접 보낼 수 있다.다만, 이 방법은 단점이 있어 재가동
channnels.get
하면 얻을 수 없다.매번 재가동할 때마다 상대방을 움직이게 하는 것은 리마내선에 쓸모가 없기 때문에 발송 방법을 고려해야 한다
이루어지다
아래 페이지를 찾아봤어요.
javascript - 사용자에게 개인 메시지 보내기 - 창고 넘침
client.fetchUser
에서 사용자 정보를 얻고 발송할 수 있을 것 같습니다.그래서 sendMsg 패러디를 해보도록 하겠습니다.
function sendDM(userId, text, option = {}) {
client.fetchUser(userId)
.then(e => {
e.send(text, option)
.then(console.log("メッセージ送信: " + text + JSON.stringify(option)))
.catch(console.error); // 1
})
.catch(console.error); // 2
}
쉽게 말하면 프로미스의 이중 구조는 fetchUser
에서 사용자가 검색하고 e.send
에서 메시지를 보내면 찾지 못하면 두 번째catch에서 오류를 출력하는 것이다.참고로 userId를 넣는 변수는 채널 Id가 아니라 사용자 Id입니다.
끝맺다
검색→발송이라서 솔직히 타임라인이 커질 것 같았는데 이번에 보냈으면 좋겠다고 생각해 고민하지 않았다.
Reference
이 문제에 관하여([discordjs] DM에 메시지를 보내고 싶어요!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yuuyu/articles/6ee025b5cb684d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)