IRC Shellbot
Moin,
also ich hab mir mit nem Freund zusammen nen Root gemietet und weil ich nicht immer per remote drauf connecten will würd ich gerne ne art IRC Shellbot basteln. Also der immer auf einen irc server connected und dann halt meine Befehle entgegennimmt. Aber ich hab kein Plan, wie ich das umsetzen soll. Das mim irc usw ist noch klar, aber wie soll ich das mit den befehlen hinbekommen? Müsste ich da jetz immer alle möglichkeiten mit if abfragen? So nach dem motto:
Delphi-Quellcode:
und wie kann das dann mit den Parametern gehen, also wenn ich jetz z.B. ein cd machen will, muss ich ja auch den Ordner mit übergeben, in den gewechseld werden soll...
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
AChannel: TIdIRCChannel; Content: String); begin if content = 'dir' then blebleble else if content = 'cd' then blablabla ... end; Ich hoffe ihr könnt mir ein bisschen helfen. Greetz Julian |
Re: IRC Shellbot
Ich würde auf jeden fall mindestens noch den Sender abfragen, damit ihn niemand missbraucht.
Zu deinem problem: du kannst du einfach mit ShellExecute den Content ausführen. |
Re: IRC Shellbot
Zitat:
Zitat:
Greetz und danke schonma - Julian |
Re: IRC Shellbot
Das Abfangen kannst du über Pipes, bzw. Named Pipes realisieren. Du musst nur mal suchen, dasa hatten wir hier schon oft.
Wenn du eigene Befehle haben willst, kannst du ja vorher überprüfen ob es ein Befehl von dir ist, und sonst es über ShellExecute versuchen auszuführen. |
Re: IRC Shellbot
ja ok, das bekomm ich ja vermutlich noch hin, aber wie soll ich das mit eigenen befehlen machen? Da hab ich echt kp... Gibts nich sowas wie eingabemasken?
Wär gut wenn mir jemand weiterhelfen könnte. Greetz Julian |
Re: IRC Shellbot
Ok, das hat sich jetz erledigt. Hab mich erstmal an den pipes usw versucht. Klappt auch, aber leider wird nicht die gesamte cmd Ausgabe per IRC zurückgesendet.
Hier mal mein code, vielleicht wisst ihr ja woran das liegt:
Delphi-Quellcode:
Ich habe den Code weitgehend hieraus übernommen:
procedure TForm1.FClbProc(Sender: TObject; const ABuffer: String; ABufSize: Cardinal);
var LNew: string; LPos: Integer; begin LNew := copy(ABuffer, 1, ABufSize); LPos := pos(#$C, LNew); if (LPos > 0) then begin MemoOutput.Text := ''; LNew := copy(LNew, LPos + 1, Length(LNew)); end; MemoOutput.Text := MemoOutput.Text + LNew; IdIRC1.Say('#lalalalala',Lnew); PostMessage(MemoOutput.Handle, WM_VSCROLL, SB_BOTTOM, 0); end; http://www.delphipraxis.net/internal...=598121#598121 Greetz Julian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz