[discordjs] DM에 메시지를 보내고 싶어요!

5879 단어 discord.jstech
초서:2021/2/2
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.getDM을 받을 수 있기 때문에 직접 보낼 수 있다.
다만, 이 방법은 단점이 있어 재가동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입니다.

끝맺다


검색→발송이라서 솔직히 타임라인이 커질 것 같았는데 이번에 보냈으면 좋겠다고 생각해 고민하지 않았다.

좋은 웹페이지 즐겨찾기