Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <IRCClient.h>
- //WIFI Settings
- #define ssid "WIFI_NETWORK_NAME"
- #define password "WIFI_PASSWORD"
- //IRC server Settings
- #define IRC_SERVER "chat.freenode.net"
- #define IRC_PORT 6667
- #define IRC_NICKNAME "BOTNick"
- #define IRC_USER "BOTNick"
- #define BOT_NICK_PW "BOT_NICK_PASSWORD"
- // Reply only to this nick
- #define REPLY_TO "YOURNICK"
- WiFiClient wiFiClient;
- IRCClient client(IRC_SERVER, IRC_PORT, wiFiClient);
- void setup() {
- pinMode(LED_BUILTIN, OUTPUT);
- digitalWrite(LED_BUILTIN, HIGH);
- Serial.begin(115200);
- delay(100);
- Serial.println("");
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- WiFi.printDiag(Serial);
- client.setCallback(callback);
- client.setSentCallback(debugSentCallback);
- }
- void loop() {
- if (!client.connected()) {
- Serial.println("Attempting IRC connection...");
- if (client.connect(IRC_NICKNAME, IRC_USER, BOT_NICK_PW)) {
- Serial.println("connected");
- } else {
- Serial.println("failed... try again in 5 seconds");
- // Wait 5 seconds before retrying
- delay(5000);
- }
- return;
- }
- client.loop();
- }
- void callback(IRCMessage ircMessage) {
- // PRIVMSG ignoring CTCP messages
- if (ircMessage.command == "PRIVMSG" && ircMessage.text[0] != '\001') {
- String message("<" + ircMessage.nick + "> " + ircMessage.text);
- Serial.println(message);
- if (ircMessage.nick == REPLY_TO && ircMessage.parameters == IRC_NICKNAME && ircMessage.text == "!join") {
- client.sendMessage(ircMessage.nick, "joining channels...");
- //Edit channels to join
- client.sendRaw("JOIN #hack");
- //client.sendRaw("JOIN #room");
- }
- if (ircMessage.text == "!die") {
- if (ircMessage.nick == REPLY_TO && ircMessage.text == "!die") {
- client.sendRaw("QUIT well, i was told to die...");
- delay(100000);
- } else {
- client.sendMessage(ircMessage.parameters, "NOU! " + ircMessage.nick + " you're not allowed to kill me...");
- }
- }
- if (ircMessage.text == "!blah") {
- client.sendMessage(ircMessage.parameters, "yeah, much blah...");
- }
- if (ircMessage.text == "!ledon") {
- if (digitalRead(LED_BUILTIN) == 0) {
- client.sendMessage(ircMessage.parameters, "Onboard LED is already On");
- }else{
- digitalWrite(LED_BUILTIN, 0);
- client.sendMessage(ircMessage.parameters, "Onboard LED: On");
- }
- }
- if (ircMessage.text == "!ledoff") {
- if (digitalRead(LED_BUILTIN) == 1) {
- client.sendMessage(ircMessage.parameters, "Onboard LED is already Off");
- }else{
- digitalWrite(LED_BUILTIN, 1);
- client.sendMessage(ircMessage.parameters, "Onboard LED: Off");
- }
- }
- // IRC INFO
- if (ircMessage.text == "!register") {
- client.sendMessage(ircMessage.parameters, "You can Register your Nick by visiting iRC.com and creating an account or by using the command '/msg nickserv register password email' then check said email to verifiy the account.");
- delay(5000);
- }
- if (ircMessage.text == "!umode") {
- client.sendMessage(ircMessage.parameters, "For a list of User Modes visit: https://wiki.freenode.net/view/User_Modes");
- delay(5000);
- }
- if (ircMessage.text == "!cmode") {
- client.sendMessage(ircMessage.parameters, "For a list of Channel Modes visit: https://wiki.freenode.net/view/Channel_Modes");
- delay(5000);
- }
- if (ircMessage.text == "!buc") {
- client.sendMessage(ircMessage.parameters, "For a list of Basic User Commands visit: https://wiki.freenode.net/view/User_Commands");
- delay(5000);
- }
- if (ircMessage.text == "!flags") {
- client.sendMessage(ircMessage.parameters, "For a list of Flags type '/ChanServ help flags' to use flags type '/cs flags #room nick +/-FLAG'");
- delay(5000);
- }
- if (ircMessage.text == "!mc") {
- client.sendMessage(ircMessage.parameters, "To use multiple commands on one line try: /mode #room -o+v nick nick");
- delay(5000);
- }
- if (ircMessage.text == "!ch340") {
- client.sendMessage(ircMessage.parameters, "Download for the Windows Ch340 Driver https://sparks.gogo.co.nz/ch340.html");
- delay(5000);
- }
- // NodeMCU ESP8266 INFO (unlisted)
- if (ircMessage.text == "!freeheap") {
- float freeheap = ESP.getFreeHeap();
- client.sendMessage(ircMessage.parameters, "ESP8266 Free Heap: " + String((freeheap),0) + " bytes");
- delay(5000);
- }
- if (ircMessage.text == "!cycles") {
- float cycles = ESP.getCycleCount();
- client.sendMessage(ircMessage.parameters, "ESP8266 Instruction Cycles since startup: " + String((cycles),0));
- delay(5000);
- }
- if (ircMessage.text == "!cpu") {
- float freq = ESP.getCpuFreqMHz();
- client.sendMessage(ircMessage.parameters, "ESP8266 CPU Frequency: " + String((freq),0) + "MHz");
- delay(5000);
- }
- if (ircMessage.text == "!resetreason") {
- String reason = ESP.getResetReason();
- client.sendMessage(ircMessage.parameters, "ESP8266 Restart Reason: " + String(reason));
- delay(5000);
- }
- if (ircMessage.text == "!chipid") {
- float chipid = ESP.getChipId();
- client.sendMessage(ircMessage.parameters, "ESP8266 ChipID: 0x" + String((chipid),HEX));
- delay(5000);
- }
- if (ircMessage.text == "!resetinfo") {
- String resetinfo = ESP.getResetInfo();
- client.sendMessage(ircMessage.parameters, "ESP8266 Reset Info: " + resetinfo);
- delay(5000);
- }
- if (ircMessage.text == "!sketchsize") {
- float sketchsize = ESP.getSketchSize();
- client.sendMessage(ircMessage.parameters, "ESP8266 Sketch Size: " + String((sketchsize),0));
- delay(5000);
- }
- if (ircMessage.text == "!version") {
- const char* sdkversion = ESP.getSdkVersion();
- String coreversion = ESP.getCoreVersion();
- String fullversion = ESP.getFullVersion();
- uint8_t bootversion = ESP.getBootVersion();
- client.sendMessage(ircMessage.parameters, "ESP8266 SDK Version: " + String(sdkversion));
- client.sendMessage(ircMessage.parameters, "ESP8266 Core Version: " + String(coreversion));
- //client.sendMessage(ircMessage.parameters, "ESP8266 Full Version: " + String(fullversion));
- //client.sendMessage(ircMessage.parameters, "ESP8266 Boot Version: " + String(bootversion));
- delay(5000);
- }
- if (ircMessage.text == "!help") {
- client.sendMessage(ircMessage.parameters, ircMessage.nick + " Check your PM for a list of commands.");
- client.sendMessage(ircMessage.nick, "ESP8266 IRC-Bot Commands");
- client.sendMessage(ircMessage.nick, " ");
- client.sendMessage(ircMessage.nick, "!register :shows someone how to create an account on irc.com");
- client.sendMessage(ircMessage.nick, "!umode :shows a user where to view a list of user modes");
- client.sendMessage(ircMessage.nick, "!cmode :shows a user where to view a list of channel modes");
- client.sendMessage(ircMessage.nick, "!buc :shows a user where to view a list of basic user commands");
- client.sendMessage(ircMessage.nick, "!flags :shows a user how to view/use flags");
- client.sendMessage(ircMessage.nick, "!ch340 :shows a user where to download the ch340 driver");
- client.sendMessage(ircMessage.nick, "!mc :shows a user how to use multiple commands in one line");
- client.sendMessage(ircMessage.nick, " ");
- client.sendMessage(ircMessage.nick, "NodeMCU ESP8266 INFO");
- client.sendMessage(ircMessage.nick, " ");
- client.sendMessage(ircMessage.nick, "!cpu :shows ESP8266 CPU Frequency");
- client.sendMessage(ircMessage.nick, "!ledon :turn on onboard LED");
- client.sendMessage(ircMessage.nick, "!ledoff :turn off onboard LED");
- //client.sendMessage(ircMessage.nick, "!freeheap :shows ESP8266 free heap memory");
- //client.sendMessage(ircMessage.nick, "!cycles :shows ESP8266 cpu instruction cycle count since start as an unsigned 32-bit");
- //client.sendMessage(ircMessage.nick, "!chipid :shows ESP8266 Chip ID");
- client.sendMessage(ircMessage.nick, "!sketchsize :shows ESP8266 Arduino Sketch Size");
- client.sendMessage(ircMessage.nick, "!version :shows ESP8266 SDK and Core Versions");
- client.sendMessage(ircMessage.nick, "!source :sends user ESP8266 IRC Bot source links");
- delay(5000);
- }
- if (ircMessage.text == "!source") {
- client.sendMessage(ircMessage.parameters, ircMessage.nick + " Check your PM for source links. :)");
- client.sendMessage(ircMessage.nick, "ESP8266 IRC-Bot Source");
- client.sendMessage(ircMessage.nick, "Arduino Library: https://www.arduino.cc/reference/en/libraries/arduinoirc/");
- client.sendMessage(ircMessage.nick, "GitHub: https://github.com/fredimachado/ArduinoIRC");
- client.sendMessage(ircMessage.nick, "ESPhack Source: https://pastebin.com/ek5w8V6A");
- delay(5000);
- }
- return;
- }
- Serial.println(ircMessage.original);
- }
- void debugSentCallback(String data) {
- Serial.println(data);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement