I will use a looped FSN approach, depending on certain keywords in chat message. Bot loops through message, an categorizes words into groups. The group which has the most members at end will trigger an action.
I have this actually already written from another project, will just need some fine tuning.
2 - Soundex algorithm says simular to another word in list, "has" -> general question
4 - pls -> def. begging
Hence logic declares this as unimportant and thus answers with generalized answer.
Code:
//duke?
if AnsiContainsStr(tempchatmsg, '^FF3600<3><9><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^FF3600<3><9><0><1.000000><>', '[Annoying Duke] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//Guild?
if AnsiContainsStr(tempchatmsg, '^00FFFC<3><3><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^00FFFC<3><3><0><1.000000><>', '[Guild] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//pm?
if AnsiContainsStr(tempchatmsg, '^0065FE<3><4><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^0065FE<3><4><0><1.000000><>', '[Private] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
msg2read := stringreplace(tempchatmsg, '[Private] : ', '', [rfReplaceAll, rfIgnoreCase]);
//WC?
if AnsiContainsStr(tempchatmsg, '^FFE400<3><1><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^FFE400<3><1><0><1.000000><>', '[World] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//common?
if AnsiContainsStr(tempchatmsg, '^FFFFFF<3><0><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^FFFFFF<3><0><0><1.000000><>', '[Common] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//squad?
if AnsiContainsStr(tempchatmsg, '^00FF00<3><2><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^00FF00<3><2><0><1.000000><>', '[Squad] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//system?
if AnsiContainsStr(tempchatmsg, '^BED293') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^BED293', '[System] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//trade
if AnsiContainsStr(tempchatmsg, '^FF742E<3><7><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^FF742E<3><7><0><1.000000><>', '[Trade] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//sz?
if AnsiContainsStr(tempchatmsg, '^00ff00') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^00ff00', '[System] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//out sz?
if AnsiContainsStr(tempchatmsg, '^ff0000') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^ff0000', '[System] : ', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
//Snowman?
if AnsiContainsStr(tempchatmsg, '^C8FF64<3><0><0><1.000000><>') = true then
begin
Tempchatmsg := stringreplace(tempchatmsg, '^C8FF64<3><0><0><1.000000><>', '', [rfReplaceAll, rfIgnoreCase]);
Tempchatmsg := stringreplace(tempchatmsg, '&', ' ', [rfReplaceAll, rfIgnoreCase]);
end;
Tempchatmsg := stringreplace(tempchatmsg, '<1><>', '[Item] ', [rfReplaceAll, rfIgnoreCase]);