AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Neunis IRC-Bot - Neue Version!
Thema durchsuchen
Ansicht
Themen-Optionen

Neunis IRC-Bot - Neue Version!

Ein Thema von Neuni · begonnen am 21. Mai 2005 · letzter Beitrag vom 24. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Neuni
Registriert seit: 25. Feb 2004
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

Neue Version! Siehe unten.
 
Spessi

 
RAD-Studio 2010 Arc
 
#2
  Alt 22. Mai 2005, 16:10
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
if Content='blathen 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 =)
Marcel von Kannen
  Mit Zitat antworten Zitat
Neuni

 
Delphi 7 Personal
 
#3
  Alt 22. Mai 2005, 16:24
Warum soll ich das denn einfach machen, wenns auch schwer geht?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#4
  Alt 22. Mai 2005, 16:25
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.
  Mit Zitat antworten Zitat
Neuni

 
Delphi 7 Personal
 
#5
  Alt 22. Mai 2005, 16:30
Naja...hatte das wohl übersehen
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

 
Delphi 6 Enterprise
 
#6
  Alt 22. Mai 2005, 17:02
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!
Thomas
  Mit Zitat antworten Zitat
Spessi

 
RAD-Studio 2010 Arc
 
#7
  Alt 22. Mai 2005, 17:12
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:
irc.Join(Edit3.Text); Naja, die guten Ideen kommen immer zuletzt
Marcel von Kannen
  Mit Zitat antworten Zitat
Neuni

 
Delphi 7 Personal
 
#8
  Alt 22. Mai 2005, 18:09
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?
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B
 
#9
  Alt 22. Mai 2005, 18:37
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.
*klick*
Simon Praetorius
  Mit Zitat antworten Zitat
Waldteufel
 
#10
  Alt 22. Mai 2005, 18:41
Hi.

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 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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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