2017-02-03 212 views
1

這是針對Twitch.tv聊天機器人,當有人輸入!random時,它會回覆一個在1 - 100之間的隨機數字。我試過var p1 = Math.floor(Math.random() * 100);,但我不確定如何將它集成到client.say("");部分中的以下代碼中。歡迎任何能夠幫助我的人。Node.js隨機數發生器?

client.on('chat', function(channel, user, message, self) { 
     if (message === "!random" && canSendMessage) { 
     canSendMessage = false; 
     client.say(""); 
     setTimeout(function() { 
      canSendMessage = true 
     }, 2000); 
+0

只是傳遞'p1'到'client.say'代替' 「」'。例如:'client.say(p1)'。 –

+0

當我這樣做時,它給了我這個錯誤。 /Users/Billy/node_modules/tmi.js/lib/utils.js:64 \t \t return channel.charAt(0)===「#」? channel.toLowerCase():「#」+ channel.toLowerCase(); – Billy

+0

看起來您需要先將其轉換爲字符串。 'p1.toString()'。 –

回答

0

client.say()隨機數後,將它轉換爲字符串:

var rand = Math.floor(Math.random() * 100); 
client.say(rand.toString()); 

注意Math.floor(Math.random() * 100)會產生0到99之間的隨機數,而不是和100

之間1

您可能想要添加一個結果:

var rand = Math.floor(Math.random() * 100) + 1; 
+0

或乘以101. –

+0

@ibrahimmahrir更改我的答案。我的原始答案和你的建議是不正確的,因爲'Math.random()'給出了一個0到1之間的一個隨機數,包含0,一個排他。 Math.ceil(0 * 100)和Math.floor(0 * 101)都等於零,小於1。 – Timo

+0

'Math.random'永遠不會是'1'。我和我自己一樣,但事實並非如此。 –

0

如果消息可以包含其他的東西,如果它可以包含比只是一個occurence多個!random(如"Howdy! Here is a random number !random. Here is another !random."),然後使用此:

client.on('chat', function(channel, user, message, self) { 
    if (canSendMessage) { // don't check if message is equal to '!random' 
     canSendMessage = false; 

     message = message.replace(/!random/g, function() { 
      return Math.floor(Math.random() * 100)) + 1; 
     }); 

     client.say(message); 

     setTimeout(function() { 
      canSendMessage = true 
     }, 2000); 
    } 
});