Guten Tag zusammen.
Ich habe hier ein Programm, welches einen definierten Account (zum Testen nehme ich meinen) aus dem Twitch Chat eines definierten Kanals auslesen soll und darauf soll (erstmal) eine LED leuchten.
Das Programm funktioniert auch soweit. Es wird gestartet, der "Bot" meldet sich mit "Hallo Welt" und schreibe ich das Wort "Test" in den Chat, antwortet der der "Bot" (in dem Fall ja mein Account) mit "Test bestanden" iin den Chat und die LED leuchtet wie gewünscht. Mit dem Programm kann ich auch andere Accounts, wie z.B. den StreamElements (Bot) abfragen. Bis jetzt aber nur ganze Wörter. Wie schaffe ich es z.B. einen €-Betrag abzufragen (es würde ja die Zahl reichen)? Bzw. ich würde dann gerne hingehen und eine Abfrage machen wie z.B: Bei Betrag 1-50 inklusive der Komma Beträge (12,57 usw) soll LED 1 leuchten und ab 50,01 und höher leuchtet LED 2.
Momentan ist LED 2 noch nicht im Programm integriert, diese einzubauen, ist aber nicht das Problem.
Das Programm sieht momentan so aus:
#include <ESP8266WiFi.h>
#include <IRCClient.h>
#define IRC_SERVER "ircchattwitchtv"
#define IRC_PORT 6667 //Port 6667
char ssid[] = "Fake_WLAN"; //WLAN Name
char password[] = "1234"; //WLAN Passwort
const String twitchChannelName = "testkanal"; //Twitch Name in klein. WICHTIG!
#define TWITCH_BOT_NAME "TestName" //Eigener oder weiterer Account als Infogeber im Chat. Keine Muss!
#define TWITCH_OAUTH_TOKEN "" //Token dieses Accounts
int led = 5; //GPIO5 wurde in led umbennant
String ircChannel = "TestKanal"; //ircChannel = Name des Kanals, zur besseren Übersicht
WiFiClient wiFiClient;
IRCClient client(IRC_SERVER, IRC_PORT, wiFiClient);
void setup() {
pinMode(led, OUTPUT);
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
ircChannel = "#" + twitchChannelName;
client.setCallback(callback);
}
void loop() {
// Try to connect to chat. If it loses connection try again
if (!client.connected()) {
Serial.println("Attempting to connect to " + ircChannel );
// Attempt to connect
// Second param is not needed by Twtich
if (client.connect(TWITCH_BOT_NAME, "", TWITCH_OAUTH_TOKEN)) {
client.sendRaw("JOIN " + ircChannel);
Serial.println("connected and ready to rock");
sendTwitchMessage("Hallo Welt"); //Begrüßung im Chat = Bot ist aktiv
} else {
Serial.println("failed... try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
return;
}
client.loop();
}
void sendTwitchMessage(String message) {
client.sendMessage(ircChannel, message);
}
void callback(IRCMessage ircMessage) {
//Serial.println("In CallBack");
if (ircMessage.command == "PRIVMSG" && ircMessage.text[0] != '\001') {
//Serial.println("Passed private message.");
ircMessage.nick.toUpperCase();
String message("<" + ircMessage.nick + "> " + ircMessage.text);
//prints chat to serial
Serial.println(message);
if (ircMessage.text.indexOf("Test") > -1 && ircMessage.nick == "TESTNAME") //Warte beim Namen TestName (alles muss groß geschrieben werden) auf den Text "Test" und führe dann das Programm aus
{
sendTwitchMessage("Test bestanden"); //Schreibt als Antwort den Text in den Chat
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay (25);
}
return;
}
}