Простой пример, который выводит в хистори все сообщения чата:

uses SysUtils;

procedure ChatScanerThread();
begin
  while delay(100) do begin
    if (ChatMessage.Unread) and (ChatMessage.Time < 3333) then begin
      Print(ChatMessage.Sender+': '+IntToStr(Ord(ChatMessage.ChatType))+' :'+ChatMessage.text);
    end;
  end;
end;

begin
  Script.NewThread(@ChatScanerThread);
  Delay(-1);
end.

Его можно немного усовершенствовать, чтобы искать нужные нам объявления:

uses SysUtils;

var phrases: array of string = ['продам драк лук', 'wts драконик лук', 'wts DB'];   // задаем строки, которые нужно искать 
    
procedure ChatScanerThread();
var i: integer;
begin         
  while delay(100) do begin
    if (ChatMessage.Unread) and (ChatMessage.ChatType = mtShout) then begin
      for i:= Low(phrases) to High(phrases) do begin
        if (Pos(LowerCase(phrases[i]), LowerCase(ChatMessage.text)) > 0) then begin
          Print(ChatMessage.Sender+': '+ChatMessage.Text);
          PlaySound(ExePath+'\Sounds\msg.wav');
          Engine.SetGameWindow(true);
          break;
        end;
      end;        
    end;
  end;
end;

begin  
  Script.NewThread(@ChatScanerThread);
  Delay(-1);
end.