2017-08-04 8 views
0

私はDiscordボットを開発中で、最近APIを読んでいます。ボットのコマンドを追加して、テキストチャネルを完全に消去し、メッセージ管理の権限を持つ人のみを許可します。Discord.js:モデレータ用のメッセージコマンドを削除

これは、これまでの私のコードです:

client.on('message', function(message) { 
    if (message.content == "^clear") { 
     try { 
      if (message.member.hasPermission("MANAGE_MESSAGES")) { 
       messages = message.channel.fetchMessages(); 
       message.channel.bulkDelete(messages); 
      } 
     } catch(e) { 
      message.channel.send("ERROR: ERROR CLEARING CHANNEL."); 
      console.log(e); 
     } 
    } 

}); 

私はこのようになりますエラーを取得:手始めに

TypeError: The messages must be an Array, Collection, or number. 
at TextChannel.bulkDelete (/Users/person/bot/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:379:11) 
at Client.<anonymous> (/Users/person/bpt/bot.js:29:33) 
at emitOne (events.js:96:13) 
at Client.emit (events.js:188:7) 
at MessageCreateHandler.handle (/Users/person/bot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34) 
at WebSocketPacketManager.handle (/Users/person/bot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:102:65) 
at WebSocketConnection.onPacket (/Users/person/bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:325:35) 
at WebSocketConnection.onMessage (/Users/person/bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:288:17) 
at WebSocket.onMessage (/Users/person/bot/node_modules/discord.js/node_modules/ws/lib/EventTarget.js:103:16) 
at emitTwo (events.js:106:13) 

答えて

4

をので、もし、あなたがバルクが14日より古いメッセージを削除することはできませんあなたは14日以上経過したメッセージでチャンネルをクリアしようとしていますが、一括削除では機能しませんし、一度に1つずつ削除する必要があります(/ forループ中)。それはドキュメント上にあります。第二に、message.channel.fetchMessages()Promiseを返します。つまり、アクセスした時点では準備ができていません。 async/awaitまたは.thenのいずれかを使用する必要があります。例:

client.on('message', function(message) { 
    if (message.content == "^clear") { 
     if (message.member.hasPermission("MANAGE_MESSAGES")) { 
      message.channel.fetchMessages() 
       .then(function(list){ 
        message.channel.bulkDelete(list); 
       }, function(err){message.channel.send("ERROR: ERROR CLEARING CHANNEL.")})       
     } 
    } 

}); 
関連する問題