Project Description
cBot is an Advance Bot for Age of Conan

cBot in details

cBot is a modular .net application that serves as a bot chat in Age of Conan. It is advance because of his arquitecture. It is prepared to adopt new funcionality from third developers.

In the cBot solution source code that you can download at Releases section you will find five projects:
  • cBot: This is the main application start point.
  • cBot.Common: Here you will find the heart of cBot.
  • cBot.DefaultModules: Here are the modules developed by me. If you want your modules to be included in future releases contact me.
  • VhaBot.Common & VhaBot.Net: These are code librareis from Vhab. http://aodevs.com/index.php/topic,371.0.html

How to configure cBot

You have to edit two xml files. Replace underline text with the required information.

<cbot_root>/cBotConfiguration.xml

<?xml version="1.0"?>
<Configuration>
<Server>aoc server address</Server>
<Port>aoc server port</Port>
<Username>account name</Username>
<Password>account password</Password>
<Character>character name</Character>
</Configuration>

<cbot_root>/cBotAccessControlList.xml

You can edit this file manually or from cBot commands acladd and aclremove. If you want to setup by hand add Character tags as you need. You have Guest, Basic, Advance and Owner levels.
In SelfAccess tag you can write a password and share it with your friends. With that password and the command aclselfaccess, cBot will grant Basic level access for you.
<?xml version="1.0" encoding="utf-8" ?>
<AccessConfiguration>
<SelfAccess Password="write a password here" />
<Character Name="your character name" Level="Owner" />
</AccessConfiguration>

How to develop new modules

In order to implement new modules in cBot you have to write a class that implement the IModule interface, and one class for every command you have in mind that implement ICommand interface.
cBot will load all classes that implements IModule and are in .dll files on same folder, so you dont need to touch any configuration neither code to load your modules. Only copy the .dll file to cBot folder.

For interact with cBot heart use cBotContext singleton. For example you can send me a private message from a cBot command using cBotContext.Instance.SendPrivateMessage("Baxtarda", "Hello, cBot rocks!")

IModule example

public class CoreModule : IModule
{
private readonly string _name;
private readonly string _version;
private readonly string _author;
private readonly string _description;
private readonly List<ICommand> _commands;

public CoreModule()
{
_name = "Core";
_version = "1.0";
_author = "Broker (brok3r@gmail.com)";
_description = "Core commands of cBot";
_commands = new List<ICommand>();
_commands.Add(new HelpCommand());
_commands.Add(new VersionCommand());
_commands.Add(new WhoCommand());
_commands.Add(new AclAddCommand());
_commands.Add(new AclRemoveCommand());
}

public string Name
{
get { return _name; }
}

public string Version
{
get { return _version; }
}

public string Author
{
get { return _author; }
}

public string Description
{
get { return _description; }
}

public IEnumerable<ICommand> Commands
{
get { return _commands; }
}

public bool Load()
{
return true;
}

public void Unload()
{

}

ICommand example

public class VersionCommand : ICommand
{
private readonly ListenToEnum _listenTo;
private readonly string _command;
private readonly string _help;
private readonly string _usage;
private readonly AccessControlLevel _accessLevel;

public VersionCommand()
{
_listenTo = ListenToEnum.Both;
_command = "Version";
_help = "Show the cBot version";
_usage = "version";
_accessLevel = AccessControlLevel.Guest;
}

public ListenToEnum ListenTo
{
get { return _listenTo; }
}

public string Command
{
get { return _command; }
}

public string Help
{
get { return _help; }
}

public string Usage
{
get { return _usage; }
}

public AccessControlLevel AccessLevel
{
get { return _accessLevel; }
}

public void ExecuteCommand(string[] args, string executedBy, ListenToEnum listenTo)
{
cBotContext.Instance.SendPrivateMessage(executedBy, "Preview Release");
}

Last edited Jun 22, 2008 at 4:48 PM by Broker, version 5