Jump to content
McKay Development

Recommended Posts

Posted (edited)

I am new in node js, i start 2 days ago.
Is that possible to create multiple specific input message?

steam chat
a: hello
bot: !mymoney, !checkname [gameid]
a: !checkname 440
bot: Team Fortress 2
a: !checkname 570
bot: Dota 2
node.js code
.....
client.on("friendMessage", function(steamID, message) {
  if (message == "!mymoney") {
    client.chatMessage(steamID, duitgw)
  }
  else if (message == "!checkname"){
    if (message.line2 == "440"){ //like this
      .....
    }
    else if (message.line2 == notnumber){ //another condition
      ....
    }
    else if (message.line2 == isnt set){ //another condition
      ....
    }
  }
  else{
    client.chatMessage(steamID, "!mymoney, !checkgame [gameid]")
  }
});
.....

edit: i use comment for highlight

Edited by Midmines
Posted (edited)

Yes, it's possible to have "inputs" in a message or command. 

 

To do so, you'll have to learn about regex.

 

Here's an example:

//Act on chat messages & commands
client.on('friendMessage', (steamID, message) => {
  //Command place holder
  var cmd;
  //Does the message match our buy command 
  if(cmd = message.match(/^!buy (\d+) (\D+)/i)) {
    //The amount to buy (input string to number)
    var amount = Number(cmd[1]);
    //The item to buy (input string)
    var item = cmd[2];
    //Log the regex values
    console.log(`User ${steamID} would like to purchase ${amount} of ${item}`);
    //Call your function that takes these two values as arguments.
    sellItem(steamID, amount, item);
  }
});

In the example above we're looking for a buy command match. The string has to start with !buy, contain a number & a set of characters. For numbers only we use 'd' & for characters we use 'D'. The number is the amount of an item to buy, while the charaters is the item's name. We can access these values by using the following notation cmd[1]. Here 1 is the first regex match & cmd[2] is the second one.

 

The (), \ & + all have different uses, escpeially when it comes to matching something from a string using regex. You can read more about those used in the example above here.

 

I hope this helps! 

Edited by SnaBe
Posted

Yes, it's possible to have "inputs" in a message or command. 

 

To do so, you'll have to learn about regex.

 

Here's an example:

//Act on chat messages & commands
client.on('friendMessage', (steamID, message) => {
  //Command place holder
  var cmd;
  //Does the message match our buy command 
  if(cmd = message.match(/^!buy (\d+) (\D+)/i)) {
    //The amount to buy (input string to number)
    var amount = Number(cmd[1]);
    //The item to buy (input string)
    var item = cmd[2];
    //Log the regex values
    console.log(`User ${steamID} would like to purchase ${amount} of ${item}`);
    //Call your function that takes these two values as arguments.
    sellItem(steamID, amount, item);
  }
});

In the example above we're looking for a buy command match. The string has to start with !buy, contain a number & a set of characters. For numbers only we use 'd' & for characters we use 'D'. The number is the amount of an item to buy, while the charaters is the item's name. We can access these values by using the following notation cmd[1]. Here 1 is the first regex match & cmd[2] is the second one.

 

The (), \ & + all have different uses, escpeially when it comes to matching something from a string using regex. You can read more about those used in the example above here.

 

I hope this helps! 

Big thanks to you master

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...