mirror of
https://github.com/QuasarApp/qTbot.git
synced 2025-04-29 07:14:32 +00:00
added support cb to get messages Ids
This commit is contained in:
parent
d67c1b6cdd
commit
32e87db332
@ -81,7 +81,7 @@ bool ITelegramBot::sendSpecificMessage(const TelegramArgs& args,
|
|||||||
|
|
||||||
auto msg = QSharedPointer<TelegramSendMsg>::create(args, extraObjects);
|
auto msg = QSharedPointer<TelegramSendMsg>::create(args, extraObjects);
|
||||||
|
|
||||||
return sendMessageRequest(msg);
|
return sendMessageRequest(msg, args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
bool ITelegramBot::sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
||||||
@ -120,7 +120,7 @@ bool ITelegramBot::editSpecificMessageWithKeyboard(const QVariant &messageId,
|
|||||||
onTimeKeyboard,
|
onTimeKeyboard,
|
||||||
keyboard));
|
keyboard));
|
||||||
|
|
||||||
return sendMessageRequest(msg);
|
return sendMessageRequest(msg, args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtraJsonObjects
|
ExtraJsonObjects
|
||||||
@ -346,9 +346,9 @@ bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QFileInfo &fi
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendFileWithPrivate(
|
return sendMessageRequest(
|
||||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||||
file));
|
file), args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QByteArray &file, const QString &fileName) {
|
bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QByteArray &file, const QString &fileName) {
|
||||||
@ -363,7 +363,7 @@ bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QByteArray &f
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendFileWithPrivate(QSharedPointer<TelegramSendDocument>::create(args, fileName, file));
|
return sendMessageRequest(QSharedPointer<TelegramSendDocument>::create(args, fileName, file), args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
||||||
@ -376,10 +376,10 @@ bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendFileWithPrivate(
|
return sendMessageRequest(
|
||||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||||
photo,
|
photo,
|
||||||
prepareInlineKeyBoard(keyboard)));
|
prepareInlineKeyBoard(keyboard)), args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
||||||
@ -399,11 +399,11 @@ bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendFileWithPrivate(
|
return sendMessageRequest(
|
||||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||||
fileName,
|
fileName,
|
||||||
photo,
|
photo,
|
||||||
prepareInlineKeyBoard(keyboard)));
|
prepareInlineKeyBoard(keyboard)), args.msgIdCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendFileById(const QString &fileID, const QVariant &chatId) {
|
bool ITelegramBot::sendFileById(const QString &fileID, const QVariant &chatId) {
|
||||||
@ -467,11 +467,12 @@ void ITelegramBot::handleIncomeNewUpdate(const QSharedPointer<iUpdate> & update)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendMessageRequest(const QSharedPointer<iRequest> &rquest) {
|
bool ITelegramBot::sendMessageRequest(const QSharedPointer<iRequest> &rquest,
|
||||||
|
const std::function<void (int)> &msgIdCB) {
|
||||||
auto&& reply = IBot::sendRequest(rquest);
|
auto&& reply = IBot::sendRequest(rquest);
|
||||||
if (reply) {
|
if (reply) {
|
||||||
connect(reply.get(), &QNetworkReply::finished, this,
|
connect(reply.get(), &QNetworkReply::finished, this,
|
||||||
[ reply, this]() {
|
[ reply, msgIdCB, this]() {
|
||||||
|
|
||||||
if (reply->error() == QNetworkReply::NoError) {
|
if (reply->error() == QNetworkReply::NoError) {
|
||||||
QByteArray&& responseData = reply->readAll();
|
QByteArray&& responseData = reply->readAll();
|
||||||
@ -480,8 +481,13 @@ bool ITelegramBot::sendMessageRequest(const QSharedPointer<iRequest> &rquest) {
|
|||||||
const QJsonObject&& obj = json.object();
|
const QJsonObject&& obj = json.object();
|
||||||
if (obj.contains("result")) {
|
if (obj.contains("result")) {
|
||||||
unsigned long long chatId = obj["result"]["chat"]["id"].toInteger();
|
unsigned long long chatId = obj["result"]["chat"]["id"].toInteger();
|
||||||
|
int messageID = obj["result"]["message_id"].toInt();
|
||||||
if (chatId) {
|
if (chatId) {
|
||||||
_lastMessageId[chatId] = obj["result"]["message_id"].toInt();
|
_lastMessageId[chatId] = messageID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msgIdCB) {
|
||||||
|
msgIdCB(messageID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -539,10 +545,6 @@ void ITelegramBot::handleFileHeader(const QWeakPointer<QNetworkReply> &sender,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ITelegramBot::sendFileWithPrivate(const QSharedPointer<TelegramSendFile> &file) {
|
|
||||||
return sendMessageRequest(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ITelegramBot::findFileInlocatStorage(const QString &fileId) const {
|
QString ITelegramBot::findFileInlocatStorage(const QString &fileId) const {
|
||||||
QDir defaultFileDir(defaultFileStorageLocation());
|
QDir defaultFileDir(defaultFileStorageLocation());
|
||||||
|
|
||||||
|
@ -353,9 +353,11 @@ protected:
|
|||||||
/**
|
/**
|
||||||
* @brief sendMessageRequest This method invoke when bot will be sent eny messages into chat.
|
* @brief sendMessageRequest This method invoke when bot will be sent eny messages into chat.
|
||||||
* @param rquest This is a message request.
|
* @param rquest This is a message request.
|
||||||
|
* @param msgIdCB call back function for the get a sent message id
|
||||||
* @return true if the message sent successful else false.
|
* @return true if the message sent successful else false.
|
||||||
*/
|
*/
|
||||||
virtual bool sendMessageRequest(const QSharedPointer<iRequest> &rquest);
|
virtual bool sendMessageRequest(const QSharedPointer<iRequest> &rquest,
|
||||||
|
const std::function<void(int msgId)>& msgIdCB = {});
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleLogin();
|
void handleLogin();
|
||||||
@ -365,9 +367,6 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
bool sendFileWithPrivate(const QSharedPointer<TelegramSendFile>& file);
|
|
||||||
|
|
||||||
QString findFileInlocatStorage(const QString& fileId) const;
|
QString findFileInlocatStorage(const QString& fileId) const;
|
||||||
QHash<QString, QSharedPointer<QJsonObject> >
|
QHash<QString, QSharedPointer<QJsonObject> >
|
||||||
prepareInlineKeyBoard(const KeyboardOnMessage &keyboard);
|
prepareInlineKeyBoard(const KeyboardOnMessage &keyboard);
|
||||||
|
@ -13,7 +13,7 @@ TelegramArgs::TelegramArgs(const QVariant &id,
|
|||||||
unsigned long long replyToMessageId,
|
unsigned long long replyToMessageId,
|
||||||
const QString &parseMode,
|
const QString &parseMode,
|
||||||
bool disableWebPagePreview,
|
bool disableWebPagePreview,
|
||||||
const QString &callBackQueryId)
|
const QString &callBackQueryId, const std::function<void (int)> &msgIdCB)
|
||||||
{
|
{
|
||||||
|
|
||||||
this->chatId = id;
|
this->chatId = id;
|
||||||
@ -22,6 +22,7 @@ TelegramArgs::TelegramArgs(const QVariant &id,
|
|||||||
this->disableWebPagePreview = disableWebPagePreview;
|
this->disableWebPagePreview = disableWebPagePreview;
|
||||||
this->replyToMessageId = replyToMessageId;
|
this->replyToMessageId = replyToMessageId;
|
||||||
this->parseMode = parseMode;
|
this->parseMode = parseMode;
|
||||||
|
this->msgIdCB = msgIdCB;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<QString, QVariant> TelegramArgs::toMap(bool textAsCaption) const {
|
QMap<QString, QVariant> TelegramArgs::toMap(bool textAsCaption) const {
|
||||||
|
@ -22,7 +22,8 @@ struct TelegramArgs
|
|||||||
unsigned long long replyToMessageId = 0,
|
unsigned long long replyToMessageId = 0,
|
||||||
const QString& parseMode = "html",
|
const QString& parseMode = "html",
|
||||||
bool disableWebPagePreview = false,
|
bool disableWebPagePreview = false,
|
||||||
const QString& callBackQueryId = ""
|
const QString& callBackQueryId = "",
|
||||||
|
const std::function<void(int msgId)>& msgIdCB = {}
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,6 +68,11 @@ struct TelegramArgs
|
|||||||
* @return list of arguments.
|
* @return list of arguments.
|
||||||
*/
|
*/
|
||||||
QMap<QString, QVariant> toMap(bool textAsCaption = false) const;
|
QMap<QString, QVariant> toMap(bool textAsCaption = false) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief msgIdCB This is id message call bak function. Will be inwoked when request finished successful.
|
||||||
|
*/
|
||||||
|
std::function<void(int msgId)> msgIdCB = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user