Seite 1 von 2

Gefundener IRC BOT

Verfasst: 21.09.2011 13:22
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

Re: Gefundener IRC BOT

Verfasst: 21.09.2011 13:59
von Jume
oder wenn möglich einen kleinen tip wenigstens geben <)

Re: Gefundener IRC BOT

Verfasst: 21.09.2011 19:43
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:

Re: Gefundener IRC BOT

Verfasst: 21.09.2011 23:49
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

Re: Gefundener IRC BOT

Verfasst: 22.09.2011 14:16
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  

Re: Gefundener IRC BOT

Verfasst: 23.09.2011 21:51
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

Re: Gefundener IRC BOT

Verfasst: 24.09.2011 16:06
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)

Re: Gefundener IRC BOT

Verfasst: 24.09.2011 18:02
von Kiffi
wofür braucht man eigentlich einen IRC Bot?

Re: Gefundener IRC BOT

Verfasst: 24.09.2011 18:19
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.

Re: Gefundener IRC BOT

Verfasst: 24.09.2011 19:37
von DarkDragon
Sowas wär für die PureBasic Channels auch nicht schlecht.