Autor Beitrag
SuiZiD
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 26.04.09 19:34 
ausblenden Delphi-Quelltext
1:
2:
if (pos('!kick ',content) <> 0and (idirc1.IsOp(auser.Nick) = true) then
idirc1.Kick(labelededit3.Text,copy(content,7,17),'Kicked by ' +auser.Nick);


eig. müsste er denjenigen kicken wenn man op hat, aber es passiert gar nichts -.-
am copy liegt es net denn ohne isop geht es oo
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 27.04.09 21:08 
ein paar mehr Informationen. Was ist LabeledEdit3? Content?
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 27.04.09 21:17 
user profile iconSuiZiD hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
copy(content,7,17)					

Was sagt dir denn, dass der Benutzername maximal 17 Zeichen lang ist?

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 27.04.09 21:22 
Hat der ausführende Benutzer denn wirklich OP?
Viele IRC Netzwerke unterstützen inzwischen noch andere Modi: HOP, Admin, Owner, usw. Ich weiß nicht, wie die Funktion IsOp darauf reagiert...

Probier doch mal sowas in der Art, um zu testen ob das generell geht:
ausblenden Delphi-Quelltext
1:
2:
if (idirc1.IsOp(auser.Nick)) then
  ShowMessage('Jo, der hat OP');


Die explizite Abfrag auf = true solltest du dir übrigens wieder abgewöhnen.

Edit: Grad mal nachgesehen. Die Funktion IsOp:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
{ Return True if the string Nick is a channel operator. }
function TIdIRC.IsOp(ANick: String): Boolean;
begin
  Result := (Length(Nick)>0and (Nick[1] = '@');    {Do not Localize}
end;

es wird also nur geprüft, ob das Zeichen vor dem Nick ein @ ist. Andere Modi, die ich oben erwähnt hatte, werden also NICHT erkannt!

_________________
PROGRAMMER: A device for converting coffee into software.


Zuletzt bearbeitet von Xentar am Mo 27.04.09 21:28, insgesamt 2-mal bearbeitet
DelphiMarkus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

OpenSuSE
Delphi 2009 Pro., Lazarus
BeitragVerfasst: Mo 27.04.09 21:26 
Hi!

Eigentlich sollte man es variabel machen, hier mal ein Tipp:
Die Länge des Benutzernamens ist ja die Länge des Befehls, z.B.Length('!kick'). Und diese Länge wird von der ganzen Länge (content) abgezogen. Den Rest kannst du dann als Benutzernamen nehmen.
Überleg mal, die funktion copy() ist schon richtig. ;)

Um mal zu dem OP zu kommen: Der Bot muss auch OP sein um kicken zu können. Und ein OP macht das so: /kick <user> das ist vielleicht besser denn !kick erscheint im Chat und /kick nicht. ;)