Entwickler-Ecke

Internet / Netzwerk - IdIRC Bot Chatinterne Befehle: !kick nick


SuiZiD - Do 23.04.09 23:05
Titel: IdIRC Bot Chatinterne Befehle: !kick nick
Guten Abend.

Ich hatte vor, dass mein Bot auf !kick nick den nick halt kickt ^^
allderdings bekomme ich es nicht hin das er

1. wenn man nur !kick sagt nix macht
2. er überhaupt merkt das hinter dem kick noch ein nickname steht

das bringt mich wirklich zur verzweiflung oo
ich wäre euch sehr dankbar wenn ihr mir helfen könntet

mfg SuiZiD


Xentar - Do 23.04.09 23:41

Und wie hast du es bisher probiert?


SuiZiD - Do 23.04.09 23:49

ich hab probiert den mitner pos überprüfung zu fixieren aber dabei hat er mir nur den nick mit nem leerzeichen ausgegeben -.-


jaenicke - Fr 24.04.09 04:30

Zeig doch einmal konkreten Code. Und wenn nur ein Leerzeichen zu viel ist, dann müsstest du ja nur dieses eine Zeichen weniger kopieren.

// EDIT:
Crosspost:
http://www.delphipraxis.net/post1029603.html

//EDIT2:
http://forum.delphi-treff.de/showthread.php?t=26424 [http://forum.delphi-treff.de/showthread.php?t=26424] :roll:


SuiZiD - Fr 24.04.09 12:45

ich geb dir meinen neuen versuchscode den alten habsch nemmer:

Delphi-Quelltext
1:
2:
if (content = '!kick ' +auser.nick) then
idirc1.Kick(labelededit3.Text,auser.Nick,'Du bist ganz schön frech!');

allerdings ist auser.nick ja der name des befehl gebers
gibt es net nen befehl für namen die in dem chat sind? >_<

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Xentar - Fr 24.04.09 12:49

Ich glaub, du gehst das ganze falsch an..

1. Du prüfst, ob der Befehl vorkommt.
2. Wenn ja: heruasfinden, welcher Nick eingegeben wurde (Stichworte: copy und pos).

aUser hat da doch überhaupt nichts mit zu tun..


SuiZiD - Fr 24.04.09 13:34

ich bekomme das net mit dem doofen copy hin =(((


Xentar - Fr 24.04.09 13:35

Dann zeig uns doch endlich mal, wie du das probierst..


SuiZiD - Fr 24.04.09 13:37


Delphi-Quelltext
1:
2:
if pos('!kick',content) <> 0 then
copy(content,' ',0);


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Marc. - Fr 24.04.09 14:23

user profile iconSuiZiD hat folgendes geschrieben Zum zitierten Posting springen:
if pos('!kick',content) <> 0 then
copy(content,' ',0);

Schau dir doch mal die Funktionsweise von Copy in der DOH an. :roll:
Copy erwartet als ersten Paramter den Sourcestring, als zweiten einen Index und als dritten die Länge des zu kopierenden Strings ab dem Index.
Zudem handelt es sich bei Copy um eine Funktion, die als Resultat den kopierten Stringpart zurückgibt.

Edit: Bitte verwende die Delphi-Tags. [delphi] [/delphi]


SuiZiD - Sa 25.04.09 11:43

Vielen Dank =D
ich habs gelöst nun sieht es so aus:


Delphi-Quelltext
1:
2:
if pos('!kick ',content) <> 0 then
idirc1.Kick(labelededit3.Text,copy(content,7,17),'Kicked by ' +auser.Nick);



Edit:

Ich hab nur noch eine Frage undzwar funzt bei mir der isop net:


Delphi-Quelltext
1:
2:
if (pos('!kick',content) <> 0and (auser.nick = labelededit4.text) or (auser.nick = idirc1.IsOp(auser.Nick)) then
idirc1.Kick(labelededit3.Text,copy(content,7,17),'Kicked by ' +auser.Nick);


weil es müsste doch idirc.isop('nick') sein oder nicht? >_< steht zumindestens überall oo


Xentar - Sa 25.04.09 15:26

Mach für neue Fragen bitte ein neues Thema auf.
Vielleicht hilft es dir schon weiter, wenn du die letzten beiden Teile der if-Abfrage auch nochmal in Klammern setzt.