Regardless of the controversies, bots are very useful as NPCs. Compared to the alternative on in-world modelled and scripted bots, out-world bots will generally look better (using the avatar mesh and any of the high-quality garments and animations you choose to purchase) and have potentially better AI. I will now share with you the knowledge gained from a brief investigation into how to create these bots, with specific consideration to OpenSim.
Important note: Every bot neads a valid login account.
The Radegast client (http://radegastclient.org/wp/) is a non-graphical client for SL. It supports almost everything you might want to do in SL, except look at it, and also includes a built-in AI agent based on A.L.I.C.E. You just turn it on as a setting, and when anyone enters chat nearby that includes the avatar's firstnname (this is very important), then Alice will repond.
I.e. If you log in as Rupert Marmaduke, and somebody says "Hello Rupert Marmaduke" or "Hello Rupert", then they will illicit some suitable response.
For OpenSim, you will need to set a URL and port in order to connect (e.g. http://127.0.0.1:9000).
Personalising Radegast (Maybe):
As mentioned the Radegast chat-bot is built upon A.L.I.C.E, which uses aiml definitions. Basically these are xml files, listing patterns (what the user might say) and templates (how the bot might respond). For example:
<pattern>TELL ME ABOUT YOURSELF</pattern>
<template>I am a natural language chatterbot, that talks to people via computer networks such as the Internet.</template>
You can conceivably modify the aiml files that come with Radegast (stored in Program Files\Radegast\aiml) as you see fit. Whatever you put in the template section is regurgitated whenever the pattern is matched. I have not tried this, but I'm 90% sure that it would work.
Getting Complex: OpenMetaverse
If you want to get your hands dirty then you can download a C# library called Open Metaverse - and it is what Radegast was built upon. There are plenty of examples provided, and it is very easy to get an avatar to login and say something (i.e. follow 5 instructions then copy and paste). Capturing the surrounding chat and responding intelligently is obvioulsy the biggest challenge.
By default the library connects to SL, but you can switch to any grid using:
client.Settings.LOGIN_SERVER = "http://osgrid.org:8002/";Full details are given here: http://lib.openmetaverse.org/wiki/How_to_create_a_basic_libopenmv_bot_for_osgrid%3F