Gefundener IRC BOT

Anfängerfragen zum Programmieren mit PureBasic.
Jume

Gefundener IRC BOT

Beitrag von Jume »

Tag Leute,

zunächst einmal:


Ich habe diesen IRC Bot auf einer Inet Seite bei Google gefunden. Habe ihn getestet und es funktioniert soweit alles. Nun frag ich mich wie ich Befehle machen kann wie bspw. "+msg user$"
sodass der Bot auch den user$ dann anschreibt, ich bekomms einfach nicht geregelt. Hoffe ihr versteht was ich meine, ich möchte im chat eingeben "+msg hidas text" (zb.) und das er das dann splittet.

lg

jume

Code: Alles auswählen

    OpenConsole()
    ConsoleTitle("IRC Bot")
    Global yourmom$, cmd$
   
    *buffer = AllocateMemory(4096)
    serv$ = "irc.dynastynet.net"
    port = 6667
    nick$ = "WS"
    channel$ = "#ther"
    InitNetwork()
    Print("PB Bot")
    PrintN(Chr(13))
    ConnectionID = OpenNetworkConnection(serv$,port)
  
    
    admin$ = "hidas"

     
    If ConnectionID
      yourmom = ConnectionID
      PrintN("Connected!" + Chr(13))
      SendNetworkString(ConnectionID, "NICK " + nick$ + Chr(13) + Chr(10))
      SendNetworkString(ConnectionID, "USER " + nick$ + " 0 * :PBbot" + Chr(13) + Chr(10))
        SendNetworkString(ConnectionID, "MODE " + nick$ + " +B" + Chr(13) + Chr(10))
        SendNetworkString(ConnectionID, "JOIN " + channel$ + Chr(13) + Chr(10))
        
      
      Repeat
        CEvent = NetworkClientEvent(ConnectionID)
 

          If yourmom$ = "con"
            SendNetworkString(ConnectionID, "JOIN " + channel$ + Chr(13) + Chr(10))
            EndIf

        
       
        If CEvent
         
          Servid = EventServer()
         
          Select CEvent
             
            Case #PB_NetworkEvent_Data
              ReceiveNetworkData(ConnectionID,*buffer,4096)
             
             
              mail$ = PeekS(*buffer)
              If FindString(mail$," ",0) > 0
                If Left(mail$,4) = "PING"
                 
                  pserv$ = Mid(mail$,FindString(mail$, ":",0) + 1,Len(mail$) - FindString(mail$, ":", 0) + 1)
                 
                  pserv$ = Trim(pserv$, Chr(0))
                  ;PrintN("Ping Received from " + pserv$ + Chr(13))
                  SendNetworkString(ConnectionID,"PONG :" + pserv$ + Chr(13) + Chr(10))
                 ; PrintN("Sent ping to " + pserv$ + Chr(13))
                ElseIf Mid(mail$, FindString(mail$, " ", 0) + 1, 7) = "PRIVMSG"
       
                  rnick$ = StringField(mail$,1,"!")
                  rnick$ = Trim(rnick$, ":")
                  mail$ = Trim(mail$, ":")
                  rmsg$ = Mid(mail$,FindString(mail$, ":",0) + 1, Len(mail$) - FindString(mail$, ":", 0) + 1)
                  If Left(rmsg$, 1) = "+"
                    cmd$ = Left(rmsg$, 5)
                    Trim(cmd$, "+")
                    
                    ;#############################Befehle
                   
                    Select cmd$
                      Case "+time"
                        Time$ = FormatDate("%hh:%ii:%ss", Date())
                        SendNetworkString(ConnectionID, "PRIVMSG " + channel$ + " :" + Time$ + Chr(13) + Chr(10))
                        
                      Case "+info"
                        If rnick$ = admin$
                           SendNetworkString(ConnectionID, "PRIVMSG " + channel$ + " :Purebasic Bot V1.0 mein lieber Admin"+Chr(13)+Chr(10))
                         Else
                           SendNetworkString(ConnectionID, "PRIVMSG " + channel$ + " :Purebasic Bot V1.0"+Chr(13)+Chr(10))
                         EndIf 
                         
                         
                       Case "+test"
                         
                        
                           ; If rnick$ = admin$
                           
                           SendNetworkString(ConnectionID, "NOTICE "+user$+" haha"+Chr(13)+Chr(10))
                        ; Else
                         ;  SendNetworkString(ConnectionID, "PRIVMSG " + channel$ + " :Sie sind leider nicht befähigt mir Befehle zu geben !"+Chr(13)+Chr(10))
                          ; EndIf 
                          
                        Case "+nick"
                          user$ = Right(cmd$, 6)
                            SendNetworkString(ConnectionID, "NICK " +user$ +Chr(13)+Chr(10))
                       EndSelect
                       
                   
                    
                    ;#############################Ende Befehle
                 
                  EndIf
                 
                  PrintN("<" + rnick$ + "> " + rmsg$)
                  ;SendNetworkString(ConnectionID, "PRIVMSG " + channel$ + " :Hi there!" + Chr(13) + Chr(10))
                  SendNetworkString(ConnectionID, "JOIN " + channel$ + Chr(13) + Chr(10))
                  
                EndIf
                
               
                
                
              EndIf
              *buffer = AllocateMemory(4096)
            Case #PB_NetworkEvent_Disconnect
              PrintN("Disconnected, Exiting.")
              quit = 1
          EndSelect
         
      EndIf 
       
      Until quit = 1
     
    Else
      PrintN("Failed to connect..." + Chr(13))
      ;CloseNetworkConnection(ConnectionID)
      PrintN("Press ENTER to close.")
      Input()
    EndIf
Jume

Re: Gefundener IRC BOT

Beitrag von Jume »

oder wenn möglich einen kleinen tip wenigstens geben <)
Jume

Re: Gefundener IRC BOT

Beitrag von Jume »

Hat denn niemand eine Idee?


Befehle nimmt das Programm an, jedoch weiß ich nicht genau wie ich es realisiere das ich bspw. folgendes eingebe:

"+msg Jume textwasauchimmer" und dann soll er den befehl +msg ausführen, an user Jume und dann noch den Text versenden.

weiß nur leider nicht wie ich das verwirkliche, weiß wie ich den von mir im Chat geschriebenen Text auslese aber nicht wie ich ihn "splitte" in Befehl, user und Text.


:lurk: :praise:
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Gefundener IRC BOT

Beitrag von Kiffi »

Jume hat geschrieben:Hat denn niemand eine Idee?
bitte keine Doppel- oder Dreifachpostings. Schon gar nicht
in dieser kurzen Zeit.

Wenn jemand eine Antwort hat, wird er sich schon melden.
Wenn nicht, musst entweder Dir selber was überlegen oder
aber in die Röhre gucken.

In der Zwischenzeit kannst Du Dir mal StringField() anschauen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Gefundener IRC BOT

Beitrag von jojo1541 »

Schau dir mal die String-befehle in der Library an. :wink:

Edit:
Hatte grad nix zu tun. hier mal ein kleines Bsp. zum Befehl Stringfield

Code: Alles auswählen


EnableExplicit

Define.s Text, Command, Name, Message

OpenConsole()

PrintN("Beispiel für StringField()")
PrintN("Bitte Text eingeben")
PrintN("Format: Kommando Name Text")

Repeat
  
  text = Input()
  
  Command = StringField(text,1,Chr(32))
  Name = StringField(text,2,Chr(32))
  Message = StringField(text,3,Chr(32))
  
  If command = "exit"
    End
  EndIf
  
  PrintN("Kommando: " + Command)
  PrintN("Name: " + Name)
  PrintN("Nachricht: " + Message)
  PrintN("")
  PrintN("")

ForEver  
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Jume

Re: Gefundener IRC BOT

Beitrag von Jume »

besten dank :bounce:


habe es nun versucht folgendermaßén zu regeln:

Code: Alles auswählen

Trim(cmd$, "+")
                    befehl$ = StringField(cmd$,1,Chr(32))
                            benutzer$ = StringField(cmd$,2,Chr(32))
                               text$ = StringField(cmd$,3,Chr(32))

Case "+msg"
                            
                            SendNetworkString(ConnectionID, "NOTICE "+benutzer$+ text$+Chr(13)+Chr(10))

klappen tut das immernoch nicht. schade...

Edit by NicTheQuick: Code-Tags gesetzt
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Gefundener IRC BOT

Beitrag von jojo1541 »

Du solltest schon einen lauffähigen Code posten. nur mit diesen fünf Zeilen kann ich nicht viel anfangen. (sind etwas unzusammenhängend) :wink:
Ansonsten kann ich leider nicht viel sagen, außer ich benutze mal wieder meien Kristallkugel. :lol:

PS: Das nächste mal bitte Code-Tags verwenden. Ansonsten wird es ziemlich unübersichtlich. (

Code: Alles auswählen

 [/Code ], natürlich ohne Leerzeichen)
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Gefundener IRC BOT

Beitrag von Kiffi »

wofür braucht man eigentlich einen IRC Bot?
a²+b²=mc²
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Gefundener IRC BOT

Beitrag von NicTheQuick »

Im #ubuntu-Channel unter freenode wird z.B. der Channel-Bot so verwendet, dass er Befehle bekommen kann und automatisch komplette URLs zu verschiedenen Themen raussuchen kann. Er kann auch Links von anderen Leuten erkennen, die Seite intern öffnen und deren Titel zurückgeben. Und noch einiges mehr.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Gefundener IRC BOT

Beitrag von DarkDragon »

Sowas wär für die PureBasic Channels auch nicht schlecht.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten