git-svn-id: svn://db.shs.com.ru/libs@132 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
119
telegram_bot/telegrambotapi.h
Normal file
119
telegram_bot/telegrambotapi.h
Normal file
@@ -0,0 +1,119 @@
|
||||
#ifndef TELEGRAMBOTAPI_H
|
||||
#define TELEGRAMBOTAPI_H
|
||||
|
||||
#include <QThread>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkRequest>
|
||||
#include <QNetworkReply>
|
||||
#include <QUrl>
|
||||
#include <QDateTime>
|
||||
#include <QMutex>
|
||||
#include <QQueue>
|
||||
#include <QImage>
|
||||
|
||||
class TelegramBotAPI : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(uint botID READ botID)
|
||||
Q_PROPERTY(QString botName READ botName)
|
||||
Q_PROPERTY(QString botToken READ botToken WRITE setBotToken)
|
||||
public:
|
||||
explicit TelegramBotAPI(QObject *parent = 0);
|
||||
~TelegramBotAPI();
|
||||
|
||||
enum MessageType {
|
||||
Text,
|
||||
Photo,
|
||||
Document,
|
||||
};
|
||||
|
||||
struct Message {
|
||||
Message() {
|
||||
chat_id = id = user_id = 0;
|
||||
}
|
||||
uint id;
|
||||
uint chat_id;
|
||||
uint user_id;
|
||||
QString user_name;
|
||||
QString text;
|
||||
QDateTime time;
|
||||
};
|
||||
struct File {
|
||||
uint chat_id;
|
||||
QString filename;
|
||||
QByteArray data;
|
||||
};
|
||||
|
||||
uint botID() const {return m_botID;}
|
||||
QString botToken() const {return m_botToken;}
|
||||
QString botName() const {return m_botName;}
|
||||
bool isConnected() const {return is_connected;}
|
||||
|
||||
public slots:
|
||||
void setBotToken(QString arg);
|
||||
bool sendMessage(uint chat_id, QString msg) {return sendMessage(chat_id, TelegramBotAPI::Text, msg.toUtf8());}
|
||||
bool sendMessage(uint chat_id, MessageType mtype, QByteArray data, QString filename = QString());
|
||||
|
||||
private:
|
||||
|
||||
struct SendQuery {
|
||||
QString method;
|
||||
QVariantMap params;
|
||||
};
|
||||
|
||||
struct DownloadFile {
|
||||
bool downloaded;
|
||||
int chat_id;
|
||||
QString id;
|
||||
QString filename;
|
||||
QUrl url;
|
||||
QByteArray data;
|
||||
};
|
||||
|
||||
static const char * send_methods[];
|
||||
static const char * param_filename;
|
||||
|
||||
// void run();
|
||||
void sendRequest(QString method, QVariantMap params);
|
||||
void checkBot();
|
||||
void updateBot();
|
||||
bool fileDownload();
|
||||
bool parseHeader(QString json, QVariant &res);
|
||||
void parseCheckBot(QString json);
|
||||
void parseMessages(QString json);
|
||||
void parseFile(QString json);
|
||||
Message parseMessage(QVariant msg);
|
||||
void startDownloadFile(uint chat_id, QVariantMap file);
|
||||
|
||||
QNetworkAccessManager * qnam;
|
||||
QNetworkReply *reply;
|
||||
// QMutex mutex;
|
||||
uint m_botID;
|
||||
QString m_botToken;
|
||||
QString botUrl;
|
||||
QString botUrlFile;
|
||||
QString m_botName;
|
||||
bool is_connected;
|
||||
int last_update;
|
||||
bool wait_server;
|
||||
bool has_stop;
|
||||
QQueue<SendQuery> sendmsg_que;
|
||||
QList<DownloadFile> download_list;
|
||||
|
||||
private slots:
|
||||
void sslErrors(QNetworkReply*, const QList<QSslError> &errors);
|
||||
void httpFinished();
|
||||
// void httpFinished(QNetworkReply*);
|
||||
|
||||
signals:
|
||||
void botOK();
|
||||
void botFail();
|
||||
void errorOccured(QString error);
|
||||
void newMessage(TelegramBotAPI::Message msg);
|
||||
void newMessage(uint chat_id, QString msg);
|
||||
void newFile(TelegramBotAPI::File file);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(TelegramBotAPI::Message)
|
||||
|
||||
#endif // TELEGRAMBOTAPI_H
|
||||
Reference in New Issue
Block a user