The plugin structure itself should not be all that complicated for a programmer versed in C#, though previous experience with VoiceAttack would obviously help.
However, a plugin cannot create commands or execute actions directly, so at least part of the functionality would need to come from preexisting VoiceAttack commands, which would require a fair understanding of VoiceAttack's more advanced features.
If you have control over this "bot" you're referring to, and you either set or can see the names of the "actions" you would be requesting it to execute, the simplest setup likely be to forego getting a list programmatically, and passing the name of the relevant action using the "Execute an External Plugin Function" action's "Plugin Context" field to your "bot" instead.
I.E. you would create a VoiceAttack command triggered by your method(s) of choice (E.G. spoken phrases, keyboard keys, etc...), which then contains an "Execute an External Plugin Function" action with it's "Plugin Context" field containing the name of the "bot action" you want the command to initiate.
This would be a more manual process, as you'd need to create a command for each action, but the plugin would likely only need to pass the name of the "bot action" to the actual "bot", rather than dealing with VoiceAttack-specific configuration.
That said, if all you need is to send a UDP packet containing a single command, without any feedback from the target application, that could potentially be done using a fairly basic inline function, E.G.
using System;
using System.Text;
using System.Net.Sockets;
public class VAInline
{
public void main()
{
UdpClient client = new UdpClient();
try
{
client.Connect("localhost", 1234);
Byte[] messageBytes = Encoding.ASCII.GetBytes("my command");
client.Send(messageBytes, messageBytes.Length);
client.Close();
}
catch (Exception e)
{
VA.WriteToLog("UDP sender exception: " + e);
}
}
}
assuming the "bot" doesn't require any handshaking, etc... which should be outlined in its documentation