aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/irc/botircdiceparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'irc/botircdiceparser.cpp')
-rw-r--r--irc/botircdiceparser.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/irc/botircdiceparser.cpp b/irc/botircdiceparser.cpp
new file mode 100644
index 0000000..39bac4e
--- /dev/null
+++ b/irc/botircdiceparser.cpp
@@ -0,0 +1,123 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+#include <math.h>
+#include <QDebug>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+
+ // Create socket
+ m_socket = new QTcpSocket(this);
+
+ m_parser = new DiceParser();
+
+ // Connect signals and slots!
+ connect(m_socket, SIGNAL(readyRead()), this, SLOT(readData()));
+ connect(m_socket,SIGNAL(connected()),this,SLOT(authentificationProcess()));
+ connect(m_socket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(errorOccurs(QAbstractSocket::SocketError)));
+ connect(ui->m_connectButton, SIGNAL(clicked()), this, SLOT(connectToServer()));
+ connect(ui->m_disconnectButton, SIGNAL(clicked()), this, SLOT(disconnectFromServer()));
+ connect(ui->m_joinButton, SIGNAL(clicked()), this, SLOT(joinChannel()));
+
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+void MainWindow::connectToServer()
+{
+ qDebug() << "start connection";
+ m_socket->connectToHost(QString("irc.freenode.net"), 8001);
+}
+void MainWindow::errorOccurs(QAbstractSocket::SocketError)
+{
+ qDebug() << "ERROR" << m_socket->errorString();
+}
+
+void MainWindow::readData()
+{
+
+ qDebug() << "Reply";
+ QString readLine = m_socket->readLine();
+
+ if(readLine.startsWith("!"))
+ readLine = readLine.remove(0,1);
+
+
+ if(readLine.contains("!"))
+ {
+
+ // qDebug()<< "in /dice";
+ QString dice=".*PRIVMSG.*!(.*)";
+ QRegExp exp(dice);
+ exp.indexIn(readLine);
+
+
+
+ QStringList list = exp.capturedTexts();
+ qDebug()<<list;
+ if(list.size()==2)
+ {
+ QString cmd = list[1];
+ if(m_parser->parseLine(cmd.simplified()))
+ {
+ m_parser->Start();
+ QString result = m_parser->displayResult();
+ QString msg("PRIVMSG #Rolisteam :%1 \r\n");
+ m_socket->write(msg.arg(result).toLatin1());
+ }
+ }
+ else
+ {
+ return;
+ }
+
+
+ }
+ else if(readLine.contains("PING :"))
+ {
+ QString dice="PING :(.*)";
+ QRegExp exp(dice);
+ exp.indexIn(readLine);
+ QStringList list = exp.capturedTexts();
+ if(list.size()==2)
+ {
+ QString resp = "PONG :"+list[1];
+
+ m_socket->write(resp.toLatin1());
+ }
+ }
+ if(readLine.contains("Found your hostname"))
+ {
+ authentificationProcess();
+ }
+ // Add to ouput
+ ui->m_output->append(readLine.trimmed());
+ // Next data??
+ if(m_socket->canReadLine()) readData();
+}
+
+void MainWindow::disconnectFromServer()
+{
+ // Disconnect from IRC server
+ m_socket->write("QUIT Good bye \r\n"); // Good bye is optional message
+ m_socket->flush();
+ m_socket->disconnect(); // Now we can try it :-)
+}
+ void MainWindow::authentificationProcess()
+ {
+ qDebug() << "authentification";
+ m_socket->write("NICK rolisteamDice \r\n");
+ m_socket->write("USER rolisteamDice rolisteamDice rolisteamDice :rolisteamDice BOT \r\n");
+ m_socket->write("MSG NickServ identify \r\n");
+
+ }
+void MainWindow::joinChannel()
+{
+ m_socket->write("JOIN #Rolisteam \r\n");
+}