Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Neunis IRC-Bot - Neue Version! (https://www.delphipraxis.net/46274-neunis-irc-bot-neue-version.html)

Neuni 21. Mai 2005 20:37


Neunis IRC-Bot - Neue Version!
 
So, da ja letztens hier auch das Thema IRC-Bot war, hab ich mal einen kleinen gecodet.
Bis jetzt kann er auf Kommandos die im Chat eingegeben werden mit Text antworten. Was er bei welchem Kommando sagt, steht in der commands.irc
Hierbei müssen alle Kommandos mit # anfangen, damit der Bot diese als Kommandos erkennt. (<-- Kann man aber auch im Source umstellen ;))

Andere Sachen (Wetter auslesen oder so) Kann man ja einfach noch hinzufügen, indem man je nach Kommando nicht aus der Textdatei die Antwort holt, sondern einen Code ausführt.

Soo, nu will ich nicht weiter nerven. Probierts einfach aus :) Viel Spass!

EDIT: Ich nap hab vergessen den Source anzuhängen :wall:

Neue Version! Siehe unten.

Spessi 22. Mai 2005 16:10

Re: Neunis IRC-Bot
 
Anstatt
Delphi-Quellcode:
procedure TForm1.ircReceive(Sender: TObject; ACommand: String);
var text:string;
    Items: TStringList;
    cmdcheck,position,iLine:integer;
begin
memo1.Lines.Add(Acommand);
//Commands filtern/senden
Items := TStringlist.Create;
text := copy(memo1.Lines[memo1.Lines.Count-1],Length(edit3.Text)+3,Length(memo1.Lines[memo1.Lines.Count-1])-Length(edit3.Text)+3);
//Gucken obs ein Command ist:
cmdcheck := pos('#',text);
if cmdcheck > 0 then begin
//COMMANDS AUS TEXT FILTERN:
position := pos(text,memo2.Text);
if position > 0 then begin
iLine := SendMessage(Memo2.Handle,EM_LINEFROMCHAR,position-1,0);
//Command gefunden...Antwort senden:
ExtractStrings(['|'], [], PChar(memo2.Lines[iLine]), Items);
irc.Say(edit3.Text,Items.Strings[1]);
//-->
end;
würde doch auch einfach nur
Delphi-Quellcode:
procedure TForm1.ircMessage(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
 Memo1.Lines.Add('['+ AUser.Nick +'] '+ Content);
end;
reichen, oder täusch ich mich?

Man müsste dann halt noch mit
Delphi-Quellcode:
if Content='bla' then blabla;
die abfrage reinmachen (Er hats aus nem File, bzw. aus Memo2.Lines aber das dürfte ja auch kein problem sein das umzusetzen, wollts jetzt nur mal schreiben weil das meines wissens nach vollkommen reichen würde (ich habs nämlich immer so gemacht)
wenns nich stimmt verbessert mich =)

Neuni 22. Mai 2005 16:24

Re: Neunis IRC-Bot
 
Warum soll ich das denn einfach machen, wenns auch schwer geht?

Matze 22. Mai 2005 16:25

Re: Neunis IRC-Bot
 
Zitat:

Zitat von Neuni
Warum soll ich das denn einfach machen, wenns auch schwer geht?

Um Fehler auszuschließen zum Beispiel und das Programm kleiner zu halten, falls das häufiger vorkommt. ;)

Neuni 22. Mai 2005 16:30

Re: Neunis IRC-Bot
 
Naja...hatte das wohl übersehen :oops:

atreju2oo0 22. Mai 2005 17:02

Re: Neunis IRC-Bot
 
Ich bin gerade am Testen und mir ist schonmal ein Fehler aufgefallen!
Das Memo kriegt keinen Scrollbar!
Ausserdem joint er nicht in den Channel!
Aber an sich finde ich die Idee sehr gut!

Spessi 22. Mai 2005 17:12

Re: Neunis IRC-Bot
 
Scrollbars:=ssVertical;
Und außerdem kann der garkeinen Channel joinen, der jetzt z.b. inner ini steht, weil:
Delphi-Quellcode:
try
irc.Connect;
irc.Join('#engels-krieger');
except
memo1.Lines.Add('Verbinden fehlgeschlagen. Bitte überpfüfen Sie die Einstellungen.')
end;
Besser wäre da
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var ini: TIniFile;
begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'einstellungen.ini');
[...]
try
irc.Connect;
irc.Join(ini.ReadString('einstellungen','channel',''));
ini.free;
except
memo1.Lines.Add('Verbinden fehlgeschlagen. Bitte überpfüfen Sie die Einstellungen.')
end;
Ja, das geht bestimmt auch anders (ini als gloabe variable und dann bei OnCreate ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'einstellungen.ini'); das machen, war mir aber nich ganz sicher und da hab ich das eben so reingeschrieben :) Wollt ja auch nur zeigen, dass er den Channel nicht richtig aus der ini datei ausliest...

Ah mir viel grad ein, noch einfacher wäre:
Delphi-Quellcode:
irc.Join(Edit3.Text);
Naja, die guten Ideen kommen immer zuletzt :P

Neuni 22. Mai 2005 18:09

Re: Neunis IRC-Bot
 
So, hab nun die größten Fehler behoben. Source stelle ich gleich rein.

Nun wär da noch ne Sache:
Wie kann ich das am einfachsten machen, dass man Plugins hinzufügen kann? Also dass man z.B. einfach durch ne DLL ein Wetter-Plugin baut, dass dann dafür sorgt, dass der Bot das wetter ausliest oder so. Einer ne Idee wie man solche Plugins am besten einbindet?

S2B 22. Mai 2005 18:37

Re: Neunis IRC-Bot
 
Zitat:

Zitat von Neuni
Nun wär da noch ne Sache:
Wie kann ich das am einfachsten machen, dass man Plugins hinzufügen kann? Also dass man z.B. einfach durch ne DLL ein Wetter-Plugin baut, dass dann dafür sorgt, dass der Bot das wetter ausliest oder so. Einer ne Idee wie man solche Plugins am besten einbindet?

Suchen. :duck:
*klick*

Waldteufel 22. Mai 2005 18:41

Re: Neunis IRC-Bot
 
Hi.

Zitat:

Zitat von Neuni
Nun wär da noch ne Sache:
Wie kann ich das am einfachsten machen, dass man Plugins hinzufügen kann? Also dass man z.B. einfach durch ne DLL ein Wetter-Plugin baut, dass dann dafür sorgt, dass der Bot das wetter ausliest oder so. Einer ne Idee wie man solche Plugins am besten einbindet?

Zuerst brauchst du eine Einheitliche Schnittstelle der DLL, z.B. eine Funktion
Delphi-Quellcode:
function getPlugInText(params : array of PChar) : PChar;
die es in jeder PlugIn-DLL gibt.
Bei Angabe eines Befehls wird die entsprechende DLL geladen und die Funktion ausgeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Seite 1 von 2  1 2      

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