twitch.tv Chat-Bot (IRC)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

twitch.tv Chat-Bot (IRC)

Beitrag von Mijikai »

Ich versuche einen Chat-Bot für twitch.tv zu programmieren.
Twitch nutzt IRC-Server für die Abwicklung des Chats.
Leider scheitere ich schon beim Login.

Hier mein Testcode:

Code: Alles auswählen

#BOT_NICK = "xyz"
#BOT_PASS = "oauth:xyz"
#BOT_CHANNEL = "xyz"

Global Handle.i
Global Event.i
Global Exit.i
Global Dim Packet.b(65536)
Global PacketSize.i

Procedure.i botConnect()
  ProcedureReturn OpenNetworkConnection("irc.chat.twitch.tv",6667,#PB_Network_TCP)
EndProcedure

Procedure.i botAuth(Nick.s,Pass.s,Chan.s)
  SendNetworkString(Handle,"PASS " + Pass + Chr(13) + Chr(10))
  SendNetworkString(Handle,"NICK " + Nick + Chr(13) + Chr(10))
  SendNetworkString(Handle,"USER " + Nick + " 0 * " + Nick + Chr(13) + Chr(10))
  SendNetworkString(Handle,"JOIN #" + Chan + Chr(13) + Chr(10))
EndProcedure

If InitNetwork()
  Handle = botConnect()
  If Handle
    botAuth(#BOT_NICK,#BOT_PASS,#BOT_CHANNEL)
    Repeat
      Event = NetworkClientEvent(Handle)
      Select Event
        Case #PB_NetworkEvent_Data
          PacketSize = ReceiveNetworkData(Handle,@Packet,65536)
          Debug PeekS(@Packet,PacketSize,#PB_UTF8|#PB_ByteLength)
        Case #PB_NetworkEvent_Disconnect
          Exit = #True
      EndSelect      
    Until Exit
    CloseNetworkConnection(Handle)
  EndIf
EndIf
Hat jemand eine Idee wo mein Fehler liegt?
Zuletzt geändert von Mijikai am 25.08.2018 16:36, insgesamt 1-mal geändert.
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: twitch.tv Chat-Bot (IRC)

Beitrag von mk-soft »

Fehlt der gesamte Handshake (Network Eventloop).

ReceiveNetworkData(...) wartet nicht das Daten empfangen sind...

Schau dir erst mal die Beispiele von Purebasic an...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: twitch.tv Chat-Bot (IRC)

Beitrag von Mijikai »

mk-soft hat geschrieben:Fehlt der gesamte Handshake (Network Eventloop).

ReceiveNetworkData(...) wartet nicht das Daten empfangen sind...

Schau dir erst mal die Beispiele von Purebasic an...
Hab meinen ersten Code/Post angepasst jedoch ohne Erfolg.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: twitch.tv Chat-Bot (IRC)

Beitrag von Sicro »

Unter Linux funktioniert der Code nicht mit einem Byte-Array-Buffer, sondern nur mit einem "echtem" alloziertem Memory:

Code: Alles auswählen

...
Global *Packet = AllocateMemory(65536)
...
PacketSize = ReceiveNetworkData(Handle,*Packet,MemorySize(*Packet))
...
So angepasst, erhalte ich schon mal die Rückmeldung:
:tmi.twitch.tv NOTICE * :Login authentication failed
Weiter testen kann ich nicht, weil ich kein IRC-Account habe.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: twitch.tv Chat-Bot (IRC)

Beitrag von HeX0R »

Sicro hat geschrieben:Unter Linux funktioniert der Code nicht mit einem Byte-Array-Buffer, sondern nur mit einem "echtem" alloziertem Memory
Ich denke nicht, dass das an Linux liegt, ein simples "EnableExplicit" hätte den Fehler auch aufgezeigt.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: twitch.tv Chat-Bot (IRC)

Beitrag von Sicro »

HeX0R hat geschrieben:Ich denke nicht, dass das an Linux liegt, ein simples "EnableExplicit" hätte den Fehler auch aufgezeigt.
Ja, richtig, der Fehler liegt wo anders.
Die anderen Betriebssysteme habe ich nicht ausgeschlossen, getestet habe ich allerdings nur unter Linux.
Hat mich schon irgendwie gewundert, weil eigentlich funktionieren auch Byte-Arrays sehr oft.
Es ist ein fieser Fehler. Wiedermal ein gutes Beispiel, das zeigt, wie wichtig der Befehl "EnableExplicit" ist.
Manchmal denkt man aber nicht dran, diesen einzufügen, wenn man Codes vom Forum testet.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: twitch.tv Chat-Bot (IRC)

Beitrag von Mijikai »

Danke für die Hilfe :)
Leider kann ich den Compiler-Fehler nicht wirklich nachvollziehen.

-> Variables needs to be declared!

Im Code:

Code: Alles auswählen

Global Dim Packet.b(65536)
Wie ist das gemeint?
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: twitch.tv Chat-Bot (IRC)

Beitrag von #NULL »

Es fehlen die Klammern: @Packet()
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: twitch.tv Chat-Bot (IRC)

Beitrag von Mijikai »

#NULL hat geschrieben:Es fehlen die Klammern: @Packet()
Danke jetzt funktioniert es.
Vergesse ich normalerweise nicht :oops:
Antworten