Thursday, 28 November 2019

how to parse my inputted chat message from CSGO game?

How do I parse the chat messages I input into the game CSGO? There doesn't seem to be any API calls for it.

var Steam = require('steam');
var fs = require('fs');
var bot = new Steam.SteamClient();



//config
var AccName='';    //account login
var AccPasswd='';  //account passwd
var AuthCode='';   //account auth

var PASSWORD='123';//console password 




var bCaptureMSG=false;
var CaptureID;
var bSendMessage=false;
var MessageReciveID;

var authID;

if (fs.existsSync('sentryfile'))
{
    var sentry = fs.readFileSync('sentryfile');
    console.log('[STEAM] logging in with sentry ');
    bot.logOn({
      accountName: AccName,
      password: AccPasswd,
      shaSentryfile: sentry
    });
}
else
{
    console.log('[STEAM] logging in without sentry');
    bot.logOn({
      accountName: AccName,
      password: AccPasswd,
      authCode: AuthCode
    });
}
bot.on('loggedOn', function() {
    console.log('[STEAM] Logged in.');
    bot.setPersonaState(Steam.EPersonaState.Online);
});


bot.on('message', function(source, message, type, chatter) {
  // respond to both chat room and private messages
  console.log('Received message: ' + message);
  console.log('Received from: ' + source);

  if(bSendMessage){
    if(message==''){
        return 0;
    }
    bot.sendMessage(MessageReciveID, message, Steam.EChatEntryType.ChatMsg);
    bSendMessage=false;
  }


  if(bCaptureMSG){
    if(message!=''&&
       source!=CaptureID)
    bot.sendMessage(CaptureID, "FROM '"+source+"': "+'"'+message+'"', Steam.EChatEntryType.ChatMsg);

  }

  if(message.charAt(0)=='/'&&
    source!=authID){
    if(message.indexOf("/passwd ") > -1){
        var string_start=message.indexOf("wd");
        var passwd= "";
        string_start+=3;
        for (i = string_start; i < message.length; i++) { 
            passwd += message.charAt(i);
        }

        if(passwd==PASSWORD){
            authID=source;
            bot.sendMessage(source, 'Good password', Steam.EChatEntryType.ChatMsg);
            return 0;
        }else{
            bot.sendMessage(source, 'Wrong Password.', Steam.EChatEntryType.ChatMsg);
            return 0;
        }

    }else{
        bot.sendMessage(source, 'Type the password before using commands.', Steam.EChatEntryType.ChatMsg);
        return 0;
    }
  }


  if (message == '/csgo') {
    bot.sendMessage(source, 'Launching cs go.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([730]);
  }else if (message == '/tf2') {
    bot.sendMessage(source, 'Launching tf2.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([440]);
  }else if (message == '/trove') {
    bot.sendMessage(source, 'Launching trove.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([304050]);
  }else if (message == '/dota2') {
    bot.sendMessage(source, 'Launching dota 2.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([440]);
  }else if (message == '/dirtybomb') {
    bot.sendMessage(source, 'Launching dirty bomb.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([333930]);
  }else if (message == '/exitgame') {
    bot.sendMessage(source, 'Turning off games.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([0]);
  }else if (message == '/run_games') {
    bot.sendMessage(source, 'Launching some games.', Steam.EChatEntryType.ChatMsg); // ChatMsg by default
    bot.gamesPlayed([730,333930,304050,570]);
  }else if(message.indexOf("/setname ") > -1){
    if(message.charAt(0)=='/'){
        bot.sendMessage(source, 'Setting new name.', Steam.EChatEntryType.ChatMsg);
        var name_start=message.indexOf("me");
        var name= "";
        name_start+=3;
        for (i = name_start; i < message.length; i++) { 
            name += message.charAt(i);
        }
        bot.setPersonaName(name);
        bot.sendMessage(source, "New name = " + name, Steam.EChatEntryType.ChatMsg);

    }else{
        bot.sendMessage(source, 'Wrong syntax: /setname <name>', Steam.EChatEntryType.ChatMsg);
    }
  }else if(message.indexOf("/run ") > -1){
    if(message.charAt(0)=='/'){
        bot.sendMessage(source, 'Running game.', Steam.EChatEntryType.ChatMsg);
        var number_start=message.indexOf("un");
        var snumber= "";
        number_start+=3;
        for (i = number_start; i < message.length; i++) { 
            snumber += message.charAt(i);
        }
        var game_id = parseInt(snumber);
        bot.gamesPlayed([game_id]);
    }else{
        bot.sendMessage(source, 'Wrong syntax: /run <id>', Steam.EChatEntryType.ChatMsg);
    }
  }else if(message.indexOf("/sendmsg ") > -1){
    if(message.charAt(0)=='/'){
        bot.sendMessage(source, 'Type message:', Steam.EChatEntryType.ChatMsg);
        var string_start=message.indexOf("sg");
        var recive_ID= "";
        string_start+=3;
        for (i = string_start; i < message.length; i++) { 
            recive_ID += message.charAt(i);
        }
        bSendMessage=true;
        MessageReciveID=recive_ID;

    }else{
        bot.sendMessage(source, 'Wrong syntax: /setname <name>', Steam.EChatEntryType.ChatMsg);
    }
  }else if(message.indexOf("/setstatus ") > -1){
    if(message.charAt(0)=='/'){
        bot.sendMessage(source, 'Setting new status.', Steam.EChatEntryType.ChatMsg);
        var string_start=message.indexOf("us");
        var status= "";
        string_start+=3;
        for (i = string_start; i < message.length; i++) { 
            status += message.charAt(i);
        }



        //if(status like "online")  small and big letters

        if(status.toUpperCase()==="ONLINE"){
            bot.setPersonaState(Steam.EPersonaState.Online);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else if(status.toUpperCase()==="AWAY"){
            bot.setPersonaState(Steam.EPersonaState.Away);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else if(status.toUpperCase()==="BUSY"){
            bot.setPersonaState(Steam.EPersonaState.Busy);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else if(status.toUpperCase()==="LOOKINGTOTRADE"||
                 status.toUpperCase()==="LTT"||
                 status.toUpperCase()==="TRADE"){
            bot.setPersonaState(Steam.EPersonaState.LookingToTrade);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else if(status.toUpperCase()==="LOOKINGTOPLAY"||
                 status.toUpperCase()==="LTP"||
                 status.toUpperCase()==="PLAY"){
            bot.setPersonaState(Steam.EPersonaState.LookingToPlay);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else if(status.toUpperCase()==="OFFLINE"){
            bot.setPersonaState(Steam.EPersonaState.Busy);
            bot.sendMessage(source, 'New Status = '+status, Steam.EChatEntryType.ChatMsg);
        }else{
             bot.sendMessage(source, 'Unknown status.', Steam.EChatEntryType.ChatMsg);
        }

    }else{
        bot.sendMessage(source, 'Wrong syntax: /setname <name>', Steam.EChatEntryType.ChatMsg);
    }
  }else if (message == '/capture_msg') {
    if(bCaptureMSG==true){
        bot.sendMessage(source, 'Turning Capture Messages off.', Steam.EChatEntryType.ChatMsg);
        bCaptureMSG=false;
    }else{
        bot.sendMessage(source, 'Turning Capture Messages on.', Steam.EChatEntryType.ChatMsg);
        CaptureID=source;
        bCaptureMSG=true;
    }
  }else if (message == '/help') {
    bot.sendMessage(source, '+++++++++++++++++++++++++++++++++++', Steam.EChatEntryType.ChatMsg);
    bot.sendMessage(source, '+++++++++++ SteamBOT v0.1 +++++++++++', Steam.EChatEntryType.ChatMsg); 
    bot.sendMessage(source, '+++++++++++++++++++++++++++++++++++', Steam.EChatEntryType.ChatMsg);  
    bot.sendMessage(source, '', Steam.EChatEntryType.ChatMsg);  
    bot.sendMessage(source, 'Commands:\n/tf2  ///runs team fortress 2\n/csgo   ///runs csgo\n/dota2   ///runs dota2\n/trove   ///runs trove\n/dirtybomb   ///runs dirtybomb\n/run_games   ///runs some popular games\n\n\/run <game_id>   ///runs game with given game_id\n/exitgame  ///exit all games\n\n/setname <name>   //set given name\n\/setstatus <status>  //set given status [Online,Offline,Away,Busy,LookingToPlay,LookingToPlay]\n\n/capture_msg  ///capture all messages sent to this account\n/sendmsg <receiver_id>   ///send message to someone', Steam.EChatEntryType.ChatMsg);  
  }else{
    if(message!='')
        if(message.charAt(0)=='/')
            bot.sendMessage(source, 'Wrong command.', Steam.EChatEntryType.ChatMsg);
  }


});


bot.on('sentry', function(sentryHash)
{//A sentry file is a file that is sent once you have
//passed steamguard verification.
    console.log('[STEAM] Received sentry file.');
    fs.writeFile('sentryfile',sentryHash,function(err) {
    if(err){
      console.log(err);
    } else {
      console.log('[FS] Saved sentry file to disk.');
    }});
});

//Handle logon errors
bot.on('error', function(e) {
console.log('[STEAM] ERROR - Logon failed');
    if (e.eresult == Steam.EResult.InvalidPassword)
    {
    console.log('Reason: invalid password');
    }
    else if (e.eresult == Steam.EResult.AlreadyLoggedInElsewhere)
    {
    console.log('Reason: already logged in elsewhere');
    }
    else if (e.eresult == Steam.EResult.AccountLogonDenied)
    {
    console.log('Reason: logon denied - steam guard needed');
    }
})


from how to parse my inputted chat message from CSGO game?

No comments:

Post a Comment