Thema: Delphi IRC-Bot als Anfänger?

Einzelnen Beitrag anzeigen

ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#26

AW: IRC-Bot als Anfänger?

  Alt 1. Aug 2018, 14:17
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.
  Mit Zitat antworten Zitat