Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IRC-Bot als Anfänger? (https://www.delphipraxis.net/197331-irc-bot-als-anfaenger.html)

ford42 31. Jul 2018 08:44

IRC-Bot als Anfänger?
 
Hey,

ich habe zwar schon ein bisschen was programmiert in Delphi, aber das ist schon lange her und noch nichts sowas wie ein IRC-Bot.


Denkt ihr, dass es für mich zu schwer ist und mit was würdet ihr es programmieren? Also welche lib, etc.


Vielen Dank
LG ford

Towmuz 31. Jul 2018 08:50

AW: IRC-Bot als Anfänger?
 
Ist speziell für dich viel zu schwer :wink:

Edit: schau einfach mal hier, die Komponente solltest du auch haben Was man über die DP-Suche so findet

ford42 31. Jul 2018 08:52

AW: IRC-Bot als Anfänger?
 
So habe ich die Frage nicht gemeint, meinte eher ob es für einen eher Anfänger zu schwer ist :D

Towmuz 31. Jul 2018 08:56

AW: IRC-Bot als Anfänger?
 
Anfänger oder Fortgeschritten kann man schlecht definieren.

Lies dich doch ein bischen in das Thema ein (Googlesuche nach "IRC Bot", evtl. auch mit "Delphi" davor), fang an und dann frag hier wenn du nicht weiterkommst.

ford42 31. Jul 2018 09:26

AW: IRC-Bot als Anfänger?
 
Danke.

Das sieht ganz schön ungewohnt aus: https://github.com/crutchy-/exec-irc...i/bot_data.pas

Das gibts nicht auch leichter oder?

Towmuz 31. Jul 2018 09:44

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409185)
Danke.

Das sieht ganz schön ungewohnt aus: https://github.com/crutchy-/exec-irc...i/bot_data.pas

Das gibts nicht auch leichter oder?

Joa, da hat sich jemand bissl Mühe gegeben :D

Ich glaub mit den Komponenten TIdIRC und TIdIRCServer von Indy (sind in deinem 10.2 Pro mit dabei),
kommst du erstmal schneller zu Ergebnissen.

Guckst du hier

ford42 31. Jul 2018 09:58

AW: IRC-Bot als Anfänger?
 
Ok, danke dir!

Das sieht ja viel leichter aus :D

KodeZwerg 31. Jul 2018 10:09

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409185)
Das sieht ganz schön ungewohnt aus: https://github.com/crutchy-/exec-irc...i/bot_data.pas

Das ist ein php irc bot, das ist schon harter tobakko, aber gut zu sehen wie der die Api einsetzt anstelle fertig-Komponenten.

ford42 31. Jul 2018 10:13

AW: IRC-Bot als Anfänger?
 
' Dann musst du noch zwei Ereignisse, OnReceive und OnMessage, hinzufügen' <-- wo muss ich die denn einfügen?

Towmuz 31. Jul 2018 11:13

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409193)
' Dann musst du noch zwei Ereignisse, OnReceive und OnMessage, hinzufügen' <-- wo muss ich die denn einfügen?

Joa das Tutorial ist alt, die Events gibts nicht mehr in der Form,
Delphi-Quellcode:
OnPrivateMessage
sollte aber gehen.

ford42 1. Aug 2018 07:11

AW: IRC-Bot als Anfänger?
 
Delphi-Quellcode:
unit UnitIRCBot;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, IdContext, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    IdIRC1: TIdIRC;
    Bt_Connect: TButton;
    Bt_JoinChannel: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Bt_Send: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Bt_ConnectClick(Sender: TObject);
    procedure Bt_JoinChannelClick(Sender: TObject);
    procedure Bt_SendClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost,
      ATarget, AMessage: string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Bt_ConnectClick(Sender: TObject);
begin
  try //versuche
    IdIRC1.Connect(); //zu verbinden
  except //wenn Fehler
    showMessage('Fehler beim Verbinden!'); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_JoinChannelClick(Sender: TObject);
begin
  IdIRC1.Join('#botty-channel');
end;

procedure TForm1.Bt_SendClick(Sender: TObject);
begin
  IdIRC1.Say('#botty-channel',Edit1.Text); //Nachricht zum Channel schicken
  Memo1.Lines.Add(IdIRC1.Nickname+': '+Edit1.Text); //Zum Memo hinzufügen, denn durch eigene Nachrichten wird das OnMessage-Ereignis nicht ausgelöst
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IdIRC1.Disconnect();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

IdIRC1.Nickname:='botty'; // Legt den Nick fest

IdIRC1.Host:='chat.freenode.net'; // Gibt den Server an

IdIRC1.Port:=6667; //Irc Port

end;


procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname,
  AHost, ATarget, AMessage: string);
begin
  Memo1.lines.add(ANickname+': '+AMessage);
end;

end.
Wenn ich auf Verbinden klicke muss ich erst paar Sec warten und dann kommt
Code:
Fehler beim Verbinden!

Weiß jemand an was das liegen kann?

Daniel 1. Aug 2018 07:15

AW: IRC-Bot als Anfänger?
 
Moin,

Du hängst an dieser Stelle beim Thema "Exceptions" fest und bei der Behandlung selbiger. Da rate ich Dir, mal die Hilfe zu konsultieren oder einschlägige Tutorials zu lesen. Diese Arbeit wird keinesfalls umsonst sein, denn Exceptions werden Dir in (so gut wie) jeder Programmiersprache begegnen.

ford42 1. Aug 2018 07:23

AW: IRC-Bot als Anfänger?
 
Danke, ich weiß glaub schon was die Excption tut, aber ich weiß nicht warum die Verbindung nicht klappt.

Oder meinst du, dass ich was einbauen kann, das mir aufzeigt warum er nicht verbinden kann?

Jasocul 1. Aug 2018 07:36

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409287)
Oder meinst du, dass ich was einbauen kann, das mir aufzeigt warum er nicht verbinden kann?

Ja, kannst du. Daher der Hinweis von Daniel, dass du dich intensiver damit auseinandersetzen solltest.

Wenn du das so änderst:
Delphi-Quellcode:
procedure TForm1.Bt_ConnectClick(Sender: TObject);
begin
  try //versuche
    IdIRC1.Connect(); //zu verbinden
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;
bekommst du schon deutlich mehr Informationen.

Towmuz 1. Aug 2018 07:44

AW: IRC-Bot als Anfänger?
 
(wurd schon gesagt)

ford42 1. Aug 2018 07:45

AW: IRC-Bot als Anfänger?
 
Danke!

Habe den Proxyserver der hier vorliegt vergessen...

ford42 1. Aug 2018 07:48

AW: IRC-Bot als Anfänger?
 
Hmh, in duckduckgo finde ich nicht wie man da einen Proxy einstellen kann. Geht das überhaupt?

KodeZwerg 1. Aug 2018 07:54

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409297)
Hmh, in duckduckgo finde ich nicht wie man da einen Proxy einstellen kann. Geht das überhaupt?

TIdConnectThroughHttpProxy sollte eine Möglichkeit sein wenn ich nicht falsch liege.

ford42 1. Aug 2018 09:29

AW: IRC-Bot als Anfänger?
 
Hmh, irgendwie finde ich dazu nichts, nicht einmal im docwiki :o

EDIT: Habe es nun im IDE gefunden, aber ich bekomme es nicht zum laufen...

Mein Code sieht nun so aus, es geht aber immer noch nicht

Delphi-Quellcode:
unit UnitIRCBot;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, IdContext, Vcl.StdCtrls,
  IdCustomTransparentProxy, IdConnectThroughHttpProxy;

type
  TForm1 = class(TForm)
    IdIRC1: TIdIRC;
    Bt_Connect: TButton;
    Bt_JoinChannel: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Bt_Send: TButton;
    IdConnectThroughHttpProxy1: TIdConnectThroughHttpProxy;
    procedure FormCreate(Sender: TObject);
    procedure Bt_ConnectClick(Sender: TObject);
    procedure Bt_JoinChannelClick(Sender: TObject);
    procedure Bt_SendClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost,
      ATarget, AMessage: string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Bt_ConnectClick(Sender: TObject);
begin
  try //versuche
    IdIRC1.Connect(); //zu verbinden
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_JoinChannelClick(Sender: TObject);
begin
  IdIRC1.Join('#botty-channel');
end;

procedure TForm1.Bt_SendClick(Sender: TObject);
begin
  IdIRC1.Say('#botty-channel',Edit1.Text); //Nachricht zum Channel schicken
  Memo1.Lines.Add(IdIRC1.Nickname+': '+Edit1.Text); //Zum Memo hinzufügen, denn durch eigene Nachrichten wird das OnMessage-Ereignis nicht ausgelöst
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IdIRC1.Disconnect();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IdConnectThroughHttpProxy1.Enabled := True;
  IdConnectThroughHttpProxy1.Host := 'Hongkong';
  IdConnectThroughHttpProxy1.Port := 80;

  IdIRC1.Nickname:='botty'; // Legt den Nick fest

  IdIRC1.Host:='chat.freenode.net'; // Gibt den Server an

  IdIRC1.Port:=6667; //Irc Port

end;

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname,
  AHost, ATarget, AMessage: string);
begin
  Memo1.lines.add(ANickname+': '+AMessage);
end;

end.

KodeZwerg 1. Aug 2018 10:16

AW: IRC-Bot als Anfänger?
 
So der Pro bin ich leider nicht, aber soweit ich mich erinnern kann muss man für Proxy Nutzung IdIOHandler einrichten und miteinander verbinden.

ford42 1. Aug 2018 10:24

AW: IRC-Bot als Anfänger?
 
Heißt das, dass ich auf dem Proxy-Server was einrichten muss?

hhcm 1. Aug 2018 10:33

AW: IRC-Bot als Anfänger?
 
Nein,

du musst den IRC Client mit einem IOHandler verbinden (TIdIOHandlerStack) und diesen wiederum mit der Proxy Komponente.

KodeZwerg 1. Aug 2018 10:38

AW: IRC-Bot als Anfänger?
 
Ja darauf wollte ich hinaus und Daniels Beitrag zum lesen der Manuals unterstützen.

ford42 1. Aug 2018 10:54

AW: IRC-Bot als Anfänger?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmh, wenn ichs richtig verstanden habe muss ich einfach

Delphi-Quellcode:
IdIRC1.IOHandler := IdIOHandlerStack1;
machen. Stimmt das?

Wenn ja, dann meckert er wegen dem SSL rum (Fehler 502 Proxy Error)

Aber ich habe den Port 80 auch in meinem ff konfiguriert

ford42 1. Aug 2018 10:56

AW: IRC-Bot als Anfänger?
 
Oder ist es, weil der Proxy SSL verlangt, dieses jedoch bei meinem Programm (noch) nicht eingerichtet ist?

ford42 1. Aug 2018 14:17

AW: IRC-Bot als Anfänger?
 
hmh, ich bin nun daheim ohne Proxy.

Da kommt zwar keine Fehlermeldung, allerdings gehts trotzdem nicht.

Also wenn ich mit meinem normalen User den botty anschreiben möchte kommt da, dass der User nicht existiert und in dem Channel ist auch niemand außer ich selber...


Delphi-Quellcode:
unit UnitIRCBot;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, IdContext, Vcl.StdCtrls,
  IdCustomTransparentProxy, IdConnectThroughHttpProxy, IdIOHandler,
  IdIOHandlerSocket, IdIOHandlerStack;

type
  TForm1 = class(TForm)
    IdIRC1: TIdIRC;
    Bt_Connect: TButton;
    Bt_JoinChannel: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Bt_Send: TButton;
    IdConnectThroughHttpProxy1: TIdConnectThroughHttpProxy;
    IdIOHandlerStack1: TIdIOHandlerStack;
    procedure FormCreate(Sender: TObject);
    procedure Bt_ConnectClick(Sender: TObject);
    procedure Bt_JoinChannelClick(Sender: TObject);
    procedure Bt_SendClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost,
      ATarget, AMessage: string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Bt_ConnectClick(Sender: TObject);
begin
  try //versuche
    IdIRC1.Connect(); //zu verbinden
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_JoinChannelClick(Sender: TObject);
begin
    try //versuche
    IdIRC1.Join('#botty-channel');
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_SendClick(Sender: TObject);
begin
  IdIRC1.Say('#botty-channel',Edit1.Text); //Nachricht zum Channel schicken
  Memo1.Lines.Add(IdIRC1.Nickname+': '+Edit1.Text); //Zum Memo hinzufügen, denn durch eigene Nachrichten wird das OnMessage-Ereignis nicht ausgelöst
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IdIRC1.Disconnect();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //IdConnectThroughHttpProxy1.Enabled := True;
  //IdConnectThroughHttpProxy1.Host := 'Hongkong';
  //IdConnectThroughHttpProxy1.Port := 80;

  //IdIRC1.IOHandler := IdIOHandlerStack1;

  IdIRC1.Nickname:='botty'; // Legt den Nick fest

  IdIRC1.Host:='chat.freenode.net'; // Gibt den Server an

  IdIRC1.Port:=6667; //Irc Port

end;

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname,
  AHost, ATarget, AMessage: string);
begin
  Memo1.lines.add(ANickname+': '+AMessage);
end;

end.

hhcm 2. Aug 2018 07:53

AW: IRC-Bot als Anfänger?
 
Hallo,

wenn ich idIrc.Realname und idIrc.Username angebe funktioniert´s hier.

ford42 2. Aug 2018 08:28

AW: IRC-Bot als Anfänger?
 
Danke, muss ich mal daheim probieren. Hier gehts ja wegen dem Proxy noch nicht...

Was ist denn der Unterschied zwischen Username und Nickname??

EDIT: Habe die Verbindung gerade über mein Smartphone laufen lassen und da gehts nun auch...

Aber wäre natürlich cool, wenn es auch über den Proxy gehen würde...

hhcm 2. Aug 2018 09:07

AW: IRC-Bot als Anfänger?
 
Alles nur eine konfigurationssache.
Wenn der FF Server nicht für den Port 6667 eingerichtet ist kannst du einstellen was du möchtest.

ford42 2. Aug 2018 09:15

AW: IRC-Bot als Anfänger?
 
Wenn ich nach ffserver suche kommt da, dass es ein Server für media und audio ist. Wofür benötige ich denn diesen für nen IRC-Client? Oo

Oder meinst du was anderes?

Mit firefox kome ich mit diesen Port ins Internet

EDIT: Du meinst den IRC-Port? Der funktioniert ja mitm Handy..
Dachte du meinst den Proxy-Port (80)

hhcm 2. Aug 2018 09:18

AW: IRC-Bot als Anfänger?
 
Ich rede von dem Proxy. (F)ore(F)ront.

ford42 2. Aug 2018 09:26

AW: IRC-Bot als Anfänger?
 
Aber den Proxy habe ich doch auf Port 80 definiert?

ford42 2. Aug 2018 09:31

AW: IRC-Bot als Anfänger?
 
Achso, sry, ich stand auf dem Schlauch..

Du meinst, dass der Proxy-Server den IRC-Port blockiert?

KodeZwerg 2. Aug 2018 09:45

AW: IRC-Bot als Anfänger?
 
Zitat:

Zitat von ford42 (Beitrag 1409459)
Aber wäre natürlich cool, wenn es auch über den Proxy gehen würde...

Funktioniert denn nicht die Methode die das Manual beschreibt?

ford42 2. Aug 2018 10:07

AW: IRC-Bot als Anfänger?
 
Also so dann?

Delphi-Quellcode:
unit UnitIRCBot;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, IdContext, Vcl.StdCtrls,
  IdCustomTransparentProxy, IdConnectThroughHttpProxy, IdIOHandler,
  IdIOHandlerSocket, IdIOHandlerStack, IdHTTP;

type
  TForm1 = class(TForm)
    IdIRC1: TIdIRC;
    Bt_Connect: TButton;
    Bt_JoinChannel: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Bt_Send: TButton;
    IdConnectThroughHttpProxy1: TIdConnectThroughHttpProxy;
    IdIOHandlerStack1: TIdIOHandlerStack;
    IdHTTP1: TIdHTTP;
    procedure FormCreate(Sender: TObject);
    procedure Bt_ConnectClick(Sender: TObject);
    procedure Bt_JoinChannelClick(Sender: TObject);
    procedure Bt_SendClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost,
      ATarget, AMessage: string);
    procedure IdIRC1Join(ASender: TIdContext; const ANickname, AHost,
      AChannel: string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Bt_ConnectClick(Sender: TObject);
begin
  try //versuche
    IdIRC1.Connect(); //zu verbinden
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_JoinChannelClick(Sender: TObject);
begin
    try //versuche
    IdIRC1.Join('#botty-channel');
  except //wenn Fehler
    on E: Exception do
      showMessage('Fehler: ' + E.Message); //Meldung zeigen
  end;
end;

procedure TForm1.Bt_SendClick(Sender: TObject);
begin
  IdIRC1.Say('#botty-channel',Edit1.Text); //Nachricht zum Channel schicken
  Memo1.Lines.Add(IdIRC1.Nickname+': '+Edit1.Text); //Zum Memo hinzufügen, denn durch eigene Nachrichten wird das OnMessage-Ereignis nicht ausgelöst
  Edit1.Text := '';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IdIRC1.Disconnect();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //IdConnectThroughHttpProxy1.Enabled := True;
  //IdConnectThroughHttpProxy1.Host := 'Hongkong';
  //IdConnectThroughHttpProxy1.Port := 80;

  IdIRC1.IOHandler := IdIOHandlerStack1;

  IdIRC1.Nickname:='botty'; // Legt den Nick fest

  IdIRC1.Host:='chat.freenode.net'; // Gibt den Server an

  IdIRC1.Port:=6667; //Irc Port

  IdIRC1.RealName:='booty';

  IdIRC1.Username:='booty';

  IdHTTP1.ProxyParams.ProxyServer := 'Hongkong';
  IdHTTP1.ProxyParams.ProxyPort := 80;
  IdHTTP1.IOHandler := IdIOHandlerStack1;



  Memo1.Text := '';

end;

procedure TForm1.IdIRC1Join(ASender: TIdContext; const ANickname, AHost,
  AChannel: string);
var
  welcomeMsg: String;
begin
  if ANickname <> IdIRC1.Nickname then
  begin
    welcomeMsg := 'Hey, ' + ANickname;
    IdIRC1.Say('#botty-channel', welcomeMsg); //Nachricht zum Channel schicken
    Memo1.Lines.Add(IdIRC1.Nickname + ': ' + welcomeMsg);
  end;
end;

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname,
  AHost, ATarget, AMessage: string);
begin
  Memo1.lines.add(ANickname+': '+AMessage);
end;

end.

ford42 2. Aug 2018 10:28

AW: IRC-Bot als Anfänger?
 
Ich glaub das liegt am Proxy-Server. Bei Hexchat kommt auch
Code:
HTTP/1.1 502 Proxy Error ( Der angegebene SSL-Port ist nicht zulässig. Forefront TMG wurde nicht zur Unterstützung von SSL-An

ford42 2. Aug 2018 10:35

AW: IRC-Bot als Anfänger?
 
Mal ne andere Frage:

Wie heißt denn das OnMessage-Ereignis in der neuen Version?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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