![]() |
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. |
Re: Neunis IRC-Bot
Anstatt
Delphi-Quellcode:
würde doch auch einfach nur
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;
Delphi-Quellcode:
reichen, oder täusch ich mich?
procedure TForm1.ircMessage(Sender: TObject; AUser: TIdIRCUser;
AChannel: TIdIRCChannel; Content: String); begin Memo1.Lines.Add('['+ AUser.Nick +'] '+ Content); end; Man müsste dann halt noch mit
Delphi-Quellcode:
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)
if Content='bla' then blabla;
wenns nich stimmt verbessert mich =) |
Re: Neunis IRC-Bot
Warum soll ich das denn einfach machen, wenns auch schwer geht?
|
Re: Neunis IRC-Bot
Zitat:
|
Re: Neunis IRC-Bot
Naja...hatte das wohl übersehen :oops:
|
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! |
Re: Neunis IRC-Bot
Scrollbars:=ssVertical;
Und außerdem kann der garkeinen Channel joinen, der jetzt z.b. inner ini steht, weil:
Delphi-Quellcode:
Besser wäre da
try
irc.Connect; irc.Join('#engels-krieger'); except memo1.Lines.Add('Verbinden fehlgeschlagen. Bitte überpfüfen Sie die Einstellungen.') end;
Delphi-Quellcode:
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...
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; Ah mir viel grad ein, noch einfacher wäre:
Delphi-Quellcode:
Naja, die guten Ideen kommen immer zuletzt :P
irc.Join(Edit3.Text);
|
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? |
Re: Neunis IRC-Bot
Zitat:
![]() |
Re: Neunis IRC-Bot
Hi.
Zitat:
Delphi-Quellcode:
die es in jeder PlugIn-DLL gibt.
function getPlugInText(params : array of PChar) : PChar;
Bei Angabe eines Befehls wird die entsprechende DLL geladen und die Funktion ausgeführt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz