2017-12-23 45 views
0

채널에서 이전 봇 메시지를 가져온 다음 해당 봇 메시지를 삭제하려고합니다.봇에서 봇 메시지를 가져옵니다. Discord.js

if (message.channel.type == 'text') { 
    message.channel.fetchMessages().then(messages => { 
     message.channel.bulkDelete(messages); 
     messagesDeleted = messages.array().length; // number of messages deleted 

     // Logging the number of messages deleted on both the channel and console. 
     message.channel.send("Deletion of messages successful. Total messages deleted: "+messagesDeleted); 
     console.log('Deletion of messages successful. Total messages deleted: '+messagesDeleted) 
    }).catch(err => { 
     console.log('Error while doing Bulk Delete'); 
     console.log(err); 
    }); 
} 

내가 메시지 만 해당 채널의 모든 봇 메시지에서 메시지를 가져 오기 한 다음 삭제 봇 싶습니다 : 나는 !clearMessages 입력 할 때 채널에있는 모든 메시지를 삭제 현재이 코드가 있습니다.

어떻게하면됩니까?

답변

1

Message은 을 나타내는 author property입니다. 각 User에는 사용자가 로봇인지 여부를 나타내는 bot property이 있습니다.

, 우리가 messages.filter(msg => msg.author.bot)로 봇 메시지하지 않은 메시지를 필터링 할 수있는 정보를 사용하여 :

if (message.channel.type == 'text') { 
    message.channel.fetchMessages().then(messages => { 
     const botMessages = messages.filter(msg => msg.author.bot); 
     message.channel.bulkDelete(botMessages); 
     messagesDeleted = botMessages.array().length; // number of messages deleted 

     // Logging the number of messages deleted on both the channel and console. 
     message.channel.send("Deletion of messages successful. Total messages deleted: " + messagesDeleted); 
     console.log('Deletion of messages successful. Total messages deleted: ' + messagesDeleted) 
    }).catch(err => { 
     console.log('Error while doing Bulk Delete'); 
     console.log(err); 
    }); 
} 
+0

매우 앙드레 감사를! 또한 빠른 질문. ! /./>로 시작하는 메시지도 삭제하고 싶습니다. (이 메시지는 봇뿐만 아니라 사용자가 작성한 것일 수도 있습니다) 그래서 const botMessages와 함께 줄 편집을 시도했습니다 :'const botMessages = messages.filter (msg => msg.author.bot && msg.content.startsWith ("!"|| ")"하지만 작동하지 않았습니다. 제가 잘못하고있는 부분을 지적하고 어떻게 해결할 수 있습니까? 많은 감사합니다. –

+0

내가 알아챈 또 다른 문제점은 봇 메시지가 1 개만있을 때 봇이 메시지를 삭제하지 않고 DiscordAPIError와 함께 나타나 적어도 2 ~ 00 개의 메시지를 삭제해야한다는 것입니다. 이 문제를 해결할만한 방법이 있습니까? –

+0

나는 이것을 위해 새로운 질문을 열 것이다. –