IPC Messages

From IRCBotWiki

Jump to: navigation, search

For the purposes of IRCBot, IPC stands for IRCBot Plugin Communication.
Listed below are the standard and other registered IPC message codes.

Contents

Message Ranges

 0x00 - 0xFF:	Reserved for official IRCBot implementation
 0x00 - 0x0F:	System Messages
 0x10 - 0x1F:	IRC
 0x20 - 0x2F:	User Info/Control
 0x30 - 0x3F:	Source Control (AutoDJ, SimpleDJ, SAM, mp3_source, etc.)
 0x40 - 0xFF:	Reserved
 0x0100 - 0x7FFFFFFF: Contact me and I will add it here

System Messages

IB_INIT		0x01	sent after IRCBot is done reading the config, loading plugins, and is about to connect to IRC and begin dragging sound servers
IB_SHUTDOWN	0x02	sent when IRCBot is shutting down
IB_SS_DRAGCOMPLETE	0x03	sent each time at the end of a stats drag. Data sent is a bool which is set to true if the title has changed since the last drag
IB_REHASH	0x04	IRCBot has rehashed, reload your config if you need to. This is for future use, IRCBot does not currently support rehashing
IB_LOG		0x05	A line that will be printed to the console/log window. Data is a pointer to a null-terminated string that will be printed. You MUST NOT call ib_printf from within this callback or there will be a thread deadlock on non-Win32 systems.
IB_GETMEMINFO	0x06	This is sent to each plugin individually, and you should return 1 if you provided the information, or 0 if you did not. Data is a pointer to an IBM_MEMINFO structure.
IB_PROCTEXT	0x07	This is sent to all plugins, and you should return 0 whether you processed the text or not. Data is a pointer to an IBM_PROCTEXT structure.

IRC Messages

IB_ONJOIN	0x10	sent when a user joins a channel, data is a ptr to a IBM_USER structure
IB_ONPART	0x11	sent when a user leaves a channel, data is a ptr to a IBM_USERTEXT structure
IB_ONQUIT	0x12	sent when a user disconnects, data is a ptr to a IBM_USERTEXT structure (with channel set to NULL in the userinfo member)
IB_ONTEXT	0x13	sent when a user speaks. data is a ptr to a IBM_USERTEXT structure (channel is set to the ircbot's nick in case of type == IBM_UTT_PRIVMSG)
IB_ONNICK	0x14	sent when a user changes nicks. data is a ptr to a IBM_NICKCHANGE structure
IB_ONNOTICE	0x15	sent when a user notices. data is a ptr to a IBM_USERTEXT structure (channel is set to the ircbot's nick in case of type == IBM_UTT_PRIVMSG)
IB_ONTOPIC	0x16	sent when a channel topic changes. data is a ptr to a IBM_USERTEXT structure
IB_ONKICK	0x17	sent when a person is kicked from a channel. data is a ptr to a IBM_ON_KICK structure

User Info/Control Messages

IB_GETUSERINFO	0x20	sent when a user's level/info is needed, sent as a IBM_GETUSERINFO structure (the nick/hostmask for you to find will be in the IBM_USERFULL/ui member, remember the hostmask may be an empty string in case of GetUserByNick())
IB_ADD_USER	0x21	sent when a user needs to be added, sent as a IBM_USERFULL structure, return values are: 0 = I don't support this, 1 = Addition failed, 2 = Addition success
IB_DEL_USER	0x22	sent when a user needs to be added, sent as a IBM_USERFULL structure. You should always return 0 for this, in case other plugins need this notification

Source Control Messages

_C_ == Command message source control should respond to
_I_ == Information message source control should send out
SOURCE_C_STOP		0x30	commands any source plugins to stop feeding the stream
SOURCE_C_PLAY		0x31	commands any source plugins to start feeding the stream
SOURCE_C_NEXT		0x32	commands any source plugins to skip the current song
SOURCE_I_STOPPING	0x33	sent by source plugin when it gets the order to stop
SOURCE_I_STOPPED	0x34	sent by source plugin when it stops
SOURCE_I_PLAYING	0x35	sent by source plugin when it starts playing
SOURCE_IS_PLAYING	0x36	the source plugin will return 1 if it is currently playing

TTS Messages

TTS_IS_LOADED		0x40	send to see if TTS is loaded, anything but 0 means TTS is loaded
TTS_GET_INTERFACE	0x41	data is a pointer to a TTS_INTERFACE structure to be filled in by the TTS plugin. Returns 1 for success

AutoDJ-specific Messages

AUTODJ_IS_LOADED	0x50	AutoDJ will return 1 if it is loaded
AUTODJ_GET_FILE_PATH	0x51	AutoDJ will copy the full path and filename to the song it is currently playing into the user-supplied buffer and return 1 on success.

Message Structures

struct IBM_USER {
 char * nick;
 char * hostmask;
 char * channel;
 int32 ulevel;
 int32 netno;
};
struct IBM_NICKCHANGE {
 char * old_nick;
 char * new_nick;
 int32 netno;
};
struct IBM_ON_KICK {
 IBM_USER * userinfo;
 char * kicked;
 char * text;
};
enum IBM_USERTEXT_TYPE {
 IBM_UTT_CHANNEL=0,
 IBM_UTT_PRIVMSG=1
};
struct IBM_USERTEXT {
 IBM_USER * userinfo;
 IBM_USERTEXT_TYPE type;
 char * text;
};
struct IBM_USERFULL {
 char nick[128];
 char pass[128];
 char hostmask[128];
 int32 ulevel;	
};
struct IBM_USEREXTENDED {
 char nick[128];
 char pass[128];
 int32 ulevel;
 uint32 flags;
 int32 numhostmasks;
 char hostmasks[MAX_HOSTMASKS][128];
};
enum IBM_GETUSERINFO_TYPES {
 IBM_UT_FULL     = 0,
 IBM_UT_EXTENDED = 1
};
struct IBM_GETUSERINFO {
 IBM_GETUSERINFO_TYPES type;
 int32 type;
 union {
  IBM_USERFULL ui;
  IBM_USEREXTENDED ue;
 };
};
struct IBM_MEMINFO {
 int64 num_pointers;
 int64 bytes_allocated;
};
struct IBM_PROCTEXT {
 char * buf;
 int32 bufSize;
};


IRCBot vde

IRCBot main pages
Main PageInstallationChangelogCommandsPluginsFAQConfigurationCreditsRemote ClientBuffered SendBuilt-In VariablesMulti Sound Server ModeUsername Character Restrictions
Auto DJ Pages
Auto DJ Main PageWebRequest SystemSchedulerMP3 EncoderVoice SupportMySQL Plugin
IRCBot Programming vde

IRCBot Programming
IPC MessagesRemote CommandsPlugin InitializationIRCBot DBShoutIRC Music Database
Tcl Functions
Tcl ScriptingTcl Events
Personal tools