Formatowanie tekstu

0

Mój problem przedstawia sie nastepująco.Chodzi o to że bot owszem wejdzie na kanał z którego zostanie wyrzucony ale doda w komendzie też JOIN powód wykopania oraz swój nick np :ChanServ JOIN #channel ChanServ test a ja chce aby było ChanServ JOIN #channel i nic poza tym. Oczywiscie to tylko aplikacja testowa a nie bot.

procedure TForm1.Button1Click(Sender: TObject);
begin
Dane:=Memo1.Text;
if pos('KICK',Dane) > 0 then begin
Memo2.Lines.Add(':ChanServ JOIN #' +copy(Dane,pos('#',Dane)+1,length(Dane)));

end;
end;
0

To wytnij fragment stringa?
Poza tym zacznij nazywać sensownie komponenty (nazwy TForm1, Button1, Memo1, Memo2 nic nie mówią).

0

Ja na bazie źródła od jednego Niemca, który napisał kod bota w Delphi do czytania pamięci procesu emulatora WinUAE Kaillera i dzięki temu stworzył bota ircowego który komentuje na IRC'u przebieg meczu online w Amigową wersję Sensible World of Soccer. Ja owego bota nieco zmodyfikowałem i zamiast niespełniającego pokładane nadzieje IdIRC z pakietu Indy użyłem komponentów z pakietu Vortex, dostępnego na torrym. Szczerze polecam ten pakiet użyłem go dynamicznie. Przykład fragmentu kodu dla rejoina na kanał:

procedure TMainForm.IRCAfterKicked(Nickname, Channel, Reason : string);
begin
  AddToLog(IRC.IRCOptions.GetUserNick + ' kicked from: ' + Channel +
    ' by: ' + Nickname + ' (' + Reason + ')');
  IRC.Join(Channel, '');
end;

Działa idealnie, po kompnięciu bot dodaje informację do loga w Memo procedurą AddToLog i wraca na kanał o ile nie został zbanowany. Nie napisałeś jak obsługujesz IRC'a, ale jeżeli piszesz pod VCL, a nie pod WinAPI i "gołych" socketach to szczerze polecam pakiet Vortex.

procedure TMainForm.ConnectBtnClick(Sender : TObject);
begin
  if ServerEdit.Enabled = True then
  begin
    ServerEdit.Enabled := False;
    ServerEdit.Color := ColorsArray[ServerEdit.Enabled];
    ConnectBtn.Enabled := False;
    IRC := TVortex.Create(Self);
    RandNumber := Random(9999);
    IRC.Server(ServerEdit.Text, '6667');
    IRC.SetIRCName(BotRealName);
    IRC.OnConnect := IRCConnect;
    IRC.OnDisconnect := IRCDisconnect;
    IRC.BeforeDisconnect := IRCBeforeDisconnect;
    IRC.OnNickInUse := IRCNickInUse;
    IRC.OnServerError := IRCServerError;
    IRC.AfterJoined := IRCAfterJoined;
    IRC.AfterParted := IRCAfterParted;
    IRC.AfterNickChanged := IRCNickChanged;
    IRC.OnMOTD := IRCMOTD;
    IRC.AfterKicked := IRCAfterKicked;
    IRC.AuthOptions.Enabled := True;
    IRC.AuthOptions.System := 'UNIX';
    IRC.AuthOptions.Ident := 'reporter';
    IRC.IRCOptions.SetUserIdent := 'reporter';
    IRC.SetMyNick(Base_NickName + IntToStr(RandNumber));
    TButton(Sender).Enabled := False;
    IRC.AuthOptions.StartAuth;
    IRC.Connect;
  end
  else
  begin
    if IRC <> nil then
    begin
      IRC.Disconnect(False, 'Reporter Bot disconnected by User');
      IRC.Free;
    end;
  end;
end;
0

Używam do tego celu "gołych" socketów także komponenty Indy czy Vortex nie wchodzą w grę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1