1
0
mirror of https://github.com/ubf/ubf.git synced 2026-04-18 10:46:04 +00:00
Files
ubf/irc_plugin.con
Joseph Wayne Norton 3d1086071e import ubf-1.11.tgz
2009-04-11 23:55:00 +09:00

65 lines
1.5 KiB
Plaintext

+NAME("irc").
+VSN("ubf1.0").
+TYPES
info() = info;
description() = description;
contract() = contract;
bool() = true | false;
nick() = string();
oldnick() = string();
newnick() = string();
group() = string();
logon() = logon;
proceed() = {ok, nick()} "A random nick is assigned";
listGroups() = groups;
groups() = [group()];
joinGroup() = {join, group()}
"You must join a group before you can send a message to it";
leaveGroup() = {leave, group()};
ok() = ok;
changeNick() = {nick, nick()} "Change your nick in all groups";
msg() = {msg, group(), string()} "send a message to a group";
msgEvent() = {msg, nick(), group(), string()};
joinEvent() = {joins, nick(), group()};
leaveEvent() = {leaves, nick(), group()};
changeNameEvent() = {changesName, oldnick(),newnick(), group()}.
%% I am assigned an initial (random) nick
+STATE start logon() => proceed() & active.
+STATE active
listGroups() => groups() & active;
joinGroup() => ok() & active;
leaveGroup() => ok() & active;
changeNick() => bool() & active;
msg() => bool() & active; % false if you have not joined the group
EVENT => msgEvent(); % A group sends me a message
EVENT => joinEvent(); % Nick joins group
EVENT => leaveEvent(); % Nick leaves group
EVENT => changeNameEvent(). % Nick changes name
+ANYSTATE
info() => string();
description() => string();
contract() => term().