Server Help

Bot Questions - Bot sends msg to Chat channel

Anonymous - Tue Sep 06, 2005 11:42 am
Post subject: Bot sends msg to Chat channel
I'm using the hybrid core. How would I get the bot to send a pre determand message every 30 mintues to the bots listed chat channel?
Cerium - Tue Sep 06, 2005 2:00 pm
Post subject:
If using the AS frontend:
1) In spawn.ini, set the chat channels your bot will join when it connects, or send the public messages '?chat=channels' (same way as in ss).

2) Use the ASConnection.sendChannelMessage(#, MESSAGE) function, where ASConnection is an instance of the ASConnection object, # is the chat channel to send the message to and MESSAGE is the message to send (String).

-----

If using the TWCore Emu:
See distorts tutorial, Im sure it has something there for it.


Wrap the appropriate messaging function in a TimerTask class, and schedule it with a Timer to run every 30 minutes (1800000 milliseconds).

Ill probably write a quick code sample when I wake up if one of the other java guys doesnt beat me to it.
D1st0rt - Tue Sep 06, 2005 5:28 pm
Post subject:
Go ahead, you called it
Cerium - Tue Sep 06, 2005 8:12 pm
Post subject:
Ok then...
Youre still getting the twcore tutorial.

Anyway this is mostly copy/paste from the tutorial bot, but Ive added a few chunklets of code for the timer creation/registration.

Code: Show/Hide

package bots.TutorialBot;

import hybrid.core.*;
import hybrid.core.consts.*;

import hybrid.core.events.*;
import hybrid.core.events.ss.*;
 
import frontend.alphaspawn.*;
import frontend.alphaspawn.tools.command.*;
 

public class Lesson1 extends AlphaSpawn
{
   /**
    * The ASConnection object will be used throughout most of the tutorials. This is the AlphaSpawn
    * extension of the SSConnection class, which provides a number of support functions and interfaces
    * for player tracking and command handling. If you play on using the AlphaSpawn frontend, you
    * should get used to working with the ASConnection object and the connection framework in general.
    */
   private ASConnection   objConnection;


   public Lesson1()
   {
      // Set this bots author and contact info...
      super("Cerium", "Cerium@gmail.com");
      
      
      CommandManager objCommands = CommandManager.getInstance();
      objCommands.registerCommand("!test", new TutorialCommand());
      
      // Attempt to open a connection...
      this.objConnection = (ASConnection) ASConnection.open();
      if(this.objConnection != null)
      {
         /* The connection was opened successfully. At this point we need to allocate a username and
          * password for the connection to use. The SpawnConfiguration class provides a few functions
          * for managing the names provided in spawn.ini.
          *
          * The allocateLoginInfo() assigns a single username for use with this bot.
          */
         LoginInfo objLoginInfo = SpawnConfiguration.allocateLoginInfo();
         if(objLoginInfo != null)
         {
            /* Once we have a username, we can set the info in the connection. This is optional, but
             * is easier than handling than handling the Connected event manually.
             *
             * Once the info is set, we tell our ASConnection object to connect. Calling connect()
             * with no parameters tells the connection to use the zone IP and port specified in
             * spawn.ini.
             */
            this.objConnection.setLoginInfo(objLoginInfo);
            this.objConnection.connect();

            /* Now we setup the timer task. the AlphaSpawn class provides a Timer for us, so we just
             * need to create the TimerTask (See the ChatTask class below)
             /
            super.objTimer.schedule(new ChatTask(), 1800000, 1800000);
         } else {
            // A username could not be allocated. This bot relies on a connection that is able to
            // login. Without a username, we need to shutdown.
            BotSpawn.shutdown("Unable to allocate a username!");
         }
      } else {
         // We were unable to allocate a connection, so were shutting down.
         BotSpawn.shutdown("Unable to allocate a connection!");
      }
   }

   /**
    * The ChatTask class is our TimerTask to send a message at a set interval. Its not very extensive,
    * so the run function is all we need to take care of.
    */
   private class ChatTask extends TimerTask
   {
      public void run()
      {
         // Make sure the connection isnt null, and check that its online...
         if(objConnection != null && objConnection.isOnline())
         {
            /* Send our message. This sends the message to the first chat channel the bot is joined to.
             * This is identical to typing ';Hello internet!' in game.
             *
             * Before this will work, we need to either set the channels in spawn.ini, or send the
             * public message ?chat=channel where 'channel' is the name of the channel to join.
             */
            objConnection.sendChannelMessage(1, "Hello internet!");
         }
      }
   }

   protected void processEvent(HybridEvent objEvent)
   {
      // Ignore null or dead events...
      if(objEvent == null || !objEvent.isAlive()) { return; }

      System.out.println("Received event: " + objEvent.getEventName());
   }
}

D1st0rt - Thu Sep 08, 2005 12:05 am
Post subject:
A TimerTask article is on my to do list, just don't have any time these days
Anonymous - Thu Sep 08, 2005 12:05 am
Post subject:
Thanks Cer, works like a charm icon_smile.gif
All times are -5 GMT
View topic
Powered by phpBB 2.0 .0.11 © 2001 phpBB Group