mirror of
https://github.com/QuasarApp/qTbot.git
synced 2025-04-26 13:54:31 +00:00
fix #11
This commit is contained in:
parent
ada22dd394
commit
5cbe21b851
@ -45,21 +45,30 @@ int main(int argc, char *argv[]) {
|
||||
filesStack.push_back(bot.getFile(tmsg->audio()->fileId(), qTbot::iFile::Local));
|
||||
}
|
||||
|
||||
bot.sendSpecificMessageWithKeyboard(tmsg->chatId(),
|
||||
"I see it - я вижу это",
|
||||
bot.sendSpecificMessageWithKeyboard(qTbot::TelegramArgs{tmsg->chatId(), "I see it", tmsg->messageId()},
|
||||
{{{"test_button", [tmsg, &bot](const QString& queryId, const QVariant& msgId){
|
||||
static int index = 0;
|
||||
bot.editSpecificMessageWithKeyboard(msgId,
|
||||
tmsg->chatId(),
|
||||
"I see it - я вижу это. Presedd count: " + QString::number(index++),"", false,
|
||||
{{{"test_button", [](auto , auto ){}}, {"test_button 2", [](auto , auto ){}}}},
|
||||
queryId);
|
||||
}}}}, "", tmsg->messageId(), "", false);
|
||||
static int index = 0;
|
||||
|
||||
bot.sendSpecificMessageWithKeyboard(tmsg->chatId(),
|
||||
"I see it - я вижу это (интерактивная клавиатура)",
|
||||
auto&& args = qTbot::TelegramArgs{tmsg->chatId(),
|
||||
"I see it. Presed count: " + QString::number(index++),
|
||||
tmsg->messageId(),
|
||||
"",
|
||||
false,
|
||||
queryId};
|
||||
|
||||
auto&& keyboard = qTbot::KeyboardOnMessage{
|
||||
{{"test_button", [](auto , auto ){}},
|
||||
{"test_button 2", [](auto , auto ){}}}};
|
||||
|
||||
bot.editSpecificMessageWithKeyboard(msgId,
|
||||
args,
|
||||
keyboard
|
||||
);
|
||||
}}}});
|
||||
|
||||
bot.sendSpecificMessageWithKeyboard(qTbot::TelegramArgs{tmsg->chatId(), "I see it", tmsg->messageId()},
|
||||
{{{"test_button"},
|
||||
{"test_button"},}}, {}, true, true, tmsg->messageId());
|
||||
{"test_button"},}}, true, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,24 +10,12 @@
|
||||
namespace qTbot {
|
||||
|
||||
TelegramEditMessage::TelegramEditMessage(const QVariant &idEditedMessage,
|
||||
const QVariant& chatId,
|
||||
const QString& newText,
|
||||
const QString& parseMode,
|
||||
bool disableWebPagePreview,
|
||||
const QString& callBackQueryId,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects):
|
||||
TelegramSendMsg(chatId,
|
||||
newText,
|
||||
extraObjects,
|
||||
0,
|
||||
parseMode,
|
||||
callBackQueryId,
|
||||
disableWebPagePreview) {
|
||||
|
||||
const TelegramArgs &args,
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramSendMsg(args, extraObjects){
|
||||
|
||||
setRequest("editMessageText");
|
||||
addArg("message_id", idEditedMessage);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -18,11 +18,7 @@ class TelegramEditMessage: public TelegramSendMsg
|
||||
{
|
||||
public:
|
||||
TelegramEditMessage(const QVariant& idEditedMessage,
|
||||
const QVariant& chatId,
|
||||
const QString& newText,
|
||||
const QString& parseMode = "",
|
||||
bool disableWebPagePreview = false,
|
||||
const QString& callBackQueryId = "",
|
||||
const TelegramArgs& args,
|
||||
const ExtraJsonObjects& extraObjects = {});
|
||||
};
|
||||
}
|
||||
|
@ -9,11 +9,10 @@
|
||||
|
||||
namespace qTbot {
|
||||
|
||||
TelegramEditMessageReplyMarkup::TelegramEditMessageReplyMarkup(const QVariant &idEditedMessage,
|
||||
const QVariant &chatId,
|
||||
const QString &callBackQueryId,
|
||||
TelegramEditMessageReplyMarkup::TelegramEditMessageReplyMarkup(const QVariant& idEditedMessage,
|
||||
const TelegramArgs& args,
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramEditMessage(idEditedMessage, chatId, "", "", false, callBackQueryId, extraObjects)
|
||||
TelegramEditMessage(idEditedMessage, args, extraObjects)
|
||||
{
|
||||
setRequest("editMessageReplyMarkup");
|
||||
}
|
||||
|
@ -19,8 +19,7 @@ class TelegramEditMessageReplyMarkup: public TelegramEditMessage
|
||||
{
|
||||
public:
|
||||
TelegramEditMessageReplyMarkup(const QVariant& idEditedMessage,
|
||||
const QVariant& chatId,
|
||||
const QString& callBackQueryId = "",
|
||||
const TelegramArgs &args,
|
||||
const ExtraJsonObjects& extraObjects = {});
|
||||
};
|
||||
}
|
||||
|
@ -8,21 +8,15 @@
|
||||
|
||||
namespace qTbot {
|
||||
|
||||
TelegramSendDocument::TelegramSendDocument(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendDocument::TelegramSendDocument(const TelegramArgs &args,
|
||||
const QString& fileName,
|
||||
const QByteArray &data,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramSendFile("sendDocument", chatId, text, fileName, TELEGRAM_DOCUMENT, data, parseMode, replyToMessageId, extraObjects) {}
|
||||
TelegramSendFile("sendDocument", fileName, TELEGRAM_DOCUMENT, data, args, extraObjects) {}
|
||||
|
||||
TelegramSendDocument::TelegramSendDocument(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendDocument::TelegramSendDocument(const TelegramArgs &args,
|
||||
const QFileInfo &file,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramSendFile("sendDocument", chatId, text, file, parseMode, replyToMessageId, extraObjects) {}
|
||||
TelegramSendFile("sendDocument", file, args, extraObjects) {}
|
||||
|
||||
}
|
||||
|
@ -19,19 +19,13 @@ namespace qTbot {
|
||||
class TelegramSendDocument: public TelegramSendFile
|
||||
{
|
||||
public:
|
||||
TelegramSendDocument(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendDocument(const TelegramArgs &args,
|
||||
const QString &fileName,
|
||||
const QByteArray& data,
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const ExtraJsonObjects& extraObjects = {});
|
||||
|
||||
TelegramSendDocument(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendDocument(const TelegramArgs &args,
|
||||
const QFileInfo &file,
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const ExtraJsonObjects& extraObjects = {});
|
||||
|
||||
};
|
||||
|
@ -12,28 +12,14 @@ namespace qTbot {
|
||||
|
||||
|
||||
qTbot::TelegramSendFile::TelegramSendFile(const QString &request,
|
||||
const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QString &fileName,
|
||||
const QString &fileType,
|
||||
const QByteArray &data,
|
||||
const QString& parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const QByteArray& data,
|
||||
const TelegramArgs &args,
|
||||
const ExtraJsonObjects& extraObjects
|
||||
):
|
||||
TelegramSingleRquest(request) {
|
||||
TelegramSingleRquest(request, args.toMap(true)) {
|
||||
|
||||
addArg("chat_id", chatId);
|
||||
if (text.size())
|
||||
addArg("caption", text);
|
||||
|
||||
if (replyToMessageId > 0) {
|
||||
addArg("reply_to_message_id", replyToMessageId);
|
||||
}
|
||||
|
||||
if (parseMode.size()) {
|
||||
addArg("parse_mode", parseMode);
|
||||
}
|
||||
|
||||
for (auto it = extraObjects.begin(); it != extraObjects.end(); it = std::next(it)) {
|
||||
addArg(it.key(), QJsonDocument(*it.value()).toJson(QJsonDocument::Compact));
|
||||
@ -43,26 +29,10 @@ qTbot::TelegramSendFile::TelegramSendFile(const QString &request,
|
||||
}
|
||||
|
||||
qTbot::TelegramSendFile::TelegramSendFile(const QString &request,
|
||||
const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QFileInfo &file,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const TelegramArgs &args,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects):
|
||||
TelegramSingleRquest(request) {
|
||||
|
||||
addArg("chat_id", chatId);
|
||||
|
||||
if (text.size())
|
||||
addArg("text", text);
|
||||
|
||||
if (replyToMessageId > 0) {
|
||||
addArg("reply_to_message_id", replyToMessageId);
|
||||
}
|
||||
|
||||
if (parseMode.size()) {
|
||||
addArg("parse_mode", parseMode);
|
||||
}
|
||||
TelegramSingleRquest(request, args.toMap(true)) {
|
||||
|
||||
QFile readFile(file.absoluteFilePath());
|
||||
if (!readFile.open(QIODevice::ReadOnly)) {
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include "qfileinfo.h"
|
||||
#include "requests/telegramsinglerquest.h"
|
||||
|
||||
#include <qTbot/telegramargs.h>
|
||||
|
||||
#define TELEGRAM_PHOTO "photo"
|
||||
#define TELEGRAM_DOCUMENT "document"
|
||||
|
||||
@ -23,22 +25,15 @@ class TelegramSendFile: public TelegramSingleRquest
|
||||
public:
|
||||
|
||||
TelegramSendFile(const QString &request,
|
||||
const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QString &fileName,
|
||||
const QString &fileType,
|
||||
const QByteArray& data,
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const TelegramArgs &args,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects = {});
|
||||
|
||||
TelegramSendFile(const QString &request,
|
||||
const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QFileInfo &file,
|
||||
const QString& parseMode = "",
|
||||
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const TelegramArgs &args,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects = {});
|
||||
|
||||
RequestMethod method() const override;
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <QJsonObject>
|
||||
namespace qTbot {
|
||||
|
||||
TelegramSendMsg::TelegramSendMsg(const TelegrammArgs& generalArgs,
|
||||
TelegramSendMsg::TelegramSendMsg(const TelegramArgs& generalArgs,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects)
|
||||
:
|
||||
TelegramSingleRquest("sendMessage")
|
||||
|
@ -8,7 +8,7 @@
|
||||
#ifndef TELEGRAMSENDMSG_H
|
||||
#define TELEGRAMSENDMSG_H
|
||||
|
||||
#include "qTbot/telegrammargs.h"
|
||||
#include "qTbot/telegramargs.h"
|
||||
#include "telegramsinglerquest.h"
|
||||
namespace qTbot {
|
||||
|
||||
@ -20,11 +20,11 @@ class TelegramSendMsg: public TelegramSingleRquest
|
||||
public:
|
||||
|
||||
/**
|
||||
* @brief TelegramSendMsg
|
||||
* @param args
|
||||
* @param extraObjects
|
||||
* @brief TelegramSendMsg This object sents msg to telegram server.
|
||||
* @param args this is generatl arguments of request (include target chat id).
|
||||
* @param extraObjects additional objects of the telegram messages (json).
|
||||
*/
|
||||
TelegramSendMsg(const TelegrammArgs& args,
|
||||
TelegramSendMsg(const TelegramArgs& args,
|
||||
const ExtraJsonObjects& extraObjects = {});
|
||||
};
|
||||
}
|
||||
|
@ -11,26 +11,15 @@
|
||||
namespace qTbot {
|
||||
|
||||
|
||||
TelegramSendPhoto::TelegramSendPhoto(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendPhoto::TelegramSendPhoto(const TelegramArgs &args,
|
||||
const QString &fileName,
|
||||
const QByteArray &data,
|
||||
const QString& parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects
|
||||
):
|
||||
TelegramSendFile("sendPhoto", chatId, text, fileName, TELEGRAM_PHOTO, data, parseMode, replyToMessageId, extraObjects) {
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramSendFile("sendPhoto", fileName, TELEGRAM_PHOTO, data, args, extraObjects) {}
|
||||
|
||||
}
|
||||
|
||||
TelegramSendPhoto::TelegramSendPhoto(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendPhoto::TelegramSendPhoto(const TelegramArgs &args,
|
||||
const QFileInfo &file,
|
||||
const QString& parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects):
|
||||
TelegramSendFile("sendPhoto", chatId, text, file, parseMode, replyToMessageId, extraObjects) {
|
||||
|
||||
}
|
||||
const ExtraJsonObjects &extraObjects):
|
||||
TelegramSendFile("sendPhoto", file, args, extraObjects){}
|
||||
|
||||
}
|
||||
|
@ -19,20 +19,14 @@ namespace qTbot {
|
||||
class TelegramSendPhoto: public TelegramSendFile
|
||||
{
|
||||
public:
|
||||
TelegramSendPhoto(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendPhoto(const TelegramArgs &args,
|
||||
const QString &fileName,
|
||||
const QByteArray& data,
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const ExtraJsonObjects& extraObjects = {}
|
||||
);
|
||||
|
||||
TelegramSendPhoto(const QVariant &chatId,
|
||||
const QString &text,
|
||||
TelegramSendPhoto(const TelegramArgs &args,
|
||||
const QFileInfo &file,
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const ExtraJsonObjects& extraObjects = {}
|
||||
);
|
||||
|
||||
|
@ -17,7 +17,8 @@ namespace qTbot {
|
||||
TelegramSingleRquest::TelegramSingleRquest(const QString& request,
|
||||
const QMap<QString, QVariant>& args) {
|
||||
setRequest(request);
|
||||
setArgs(args);}
|
||||
setArgs(args);
|
||||
}
|
||||
|
||||
TelegramSingleRquest::TelegramSingleRquest(const QString &request) {
|
||||
setRequest(request);
|
||||
|
@ -66,10 +66,10 @@ bool ITelegramBot::login(const QByteArray &token) {
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendMessage(const QVariant &chatId, const QString &text) {
|
||||
return sendSpecificMessage(TelegrammArgs{chatId, text});
|
||||
return sendSpecificMessage(TelegramArgs{chatId, text});
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendSpecificMessage(const TelegrammArgs& args,
|
||||
bool ITelegramBot::sendSpecificMessage(const TelegramArgs& args,
|
||||
const ExtraJsonObjects &extraObjects) {
|
||||
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
@ -79,39 +79,14 @@ bool ITelegramBot::sendSpecificMessage(const TelegrammArgs& args,
|
||||
return false;
|
||||
}
|
||||
|
||||
auto msg = QSharedPointer<TelegramSendMsg>::create(chatId,
|
||||
text,
|
||||
extraObjects,
|
||||
replyToMessageId,
|
||||
parseMode,
|
||||
callBackQueryId,
|
||||
disableWebPagePreview);
|
||||
auto msg = QSharedPointer<TelegramSendMsg>::create(args, extraObjects);
|
||||
|
||||
return sendMessageRequest(msg);
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendSpecificMessageWithKeyboard(const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QList<QList<QString>> &keyboard,
|
||||
const QString &callBackQueryId,
|
||||
bool onTimeKeyboard,
|
||||
bool autoResizeKeyboard,
|
||||
unsigned long long replyToMessageId,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
return false;
|
||||
|
||||
auto msg = QSharedPointer<TelegramSendMsg>::create(chatId,
|
||||
text,
|
||||
prepareKeyboard(autoResizeKeyboard, onTimeKeyboard, keyboard),
|
||||
replyToMessageId,
|
||||
parseMode,
|
||||
callBackQueryId,
|
||||
disableWebPagePreview);
|
||||
|
||||
return sendMessageRequest(msg);
|
||||
bool ITelegramBot::sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
||||
const KeyboardOnMessage &keyboard) {
|
||||
return sendSpecificMessage(args, prepareInlineKeyBoard(keyboard));
|
||||
}
|
||||
|
||||
bool ITelegramBot::deleteMessage(const QVariant &chatId, const QVariant &messageId) {
|
||||
@ -127,28 +102,20 @@ bool ITelegramBot::deleteMessage(const QVariant &chatId, const QVariant &message
|
||||
return sendMessageRequest(msg);
|
||||
}
|
||||
|
||||
bool ITelegramBot::editSpecificMessageWithKeyboard(const QVariant & messageId,
|
||||
const QVariant &chatId,
|
||||
const QString &newText,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview,
|
||||
const QList<QList<QString>> &keyboard,
|
||||
const QString &callBackQueryId,
|
||||
bool ITelegramBot::editSpecificMessageWithKeyboard(const QVariant &messageId,
|
||||
const TelegramArgs& args,
|
||||
const QList<QList<QString> > &keyboard,
|
||||
bool onTimeKeyboard,
|
||||
bool autoResizeKeyboard) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!messageId.isValid() || messageId.isNull())
|
||||
return false;
|
||||
|
||||
auto msg = QSharedPointer<TelegramEditMessage>::create(messageId,
|
||||
chatId,
|
||||
newText,
|
||||
parseMode,
|
||||
disableWebPagePreview,
|
||||
callBackQueryId,
|
||||
args,
|
||||
prepareKeyboard(autoResizeKeyboard,
|
||||
onTimeKeyboard,
|
||||
keyboard));
|
||||
@ -209,26 +176,19 @@ qTbot::ITelegramBot::prepareKeyboard(bool autoResizeKeyboard,
|
||||
return extraObjects;
|
||||
}
|
||||
|
||||
bool ITelegramBot::editSpecificMessageWithKeyboard(const QVariant &messageId,
|
||||
const QVariant &chatId,
|
||||
const QString &text,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview,
|
||||
const KeyboardOnMessage &keyboard,
|
||||
const QString &callBackQueryId) {
|
||||
bool ITelegramBot::editSpecificMessageWithKeyboard(const QVariant& messageId,
|
||||
const TelegramArgs& args,
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
const KeyboardOnMessage &keyboard ) {
|
||||
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!messageId.isValid() || messageId.isNull())
|
||||
return false;
|
||||
|
||||
auto msg = QSharedPointer<TelegramEditMessage>::create(messageId,
|
||||
chatId,
|
||||
text,
|
||||
parseMode,
|
||||
disableWebPagePreview,
|
||||
callBackQueryId,
|
||||
args,
|
||||
prepareInlineKeyBoard(keyboard));
|
||||
|
||||
|
||||
@ -246,8 +206,7 @@ bool ITelegramBot::editMessageKeyboard(const QVariant &messageId,
|
||||
return false;
|
||||
|
||||
auto msg = QSharedPointer<TelegramEditMessageReplyMarkup>::create(messageId,
|
||||
chatId,
|
||||
callBackQueryId,
|
||||
TelegramArgs(chatId, "", 0, "html", false, callBackQueryId),
|
||||
prepareInlineKeyBoard(keyboard));
|
||||
|
||||
|
||||
@ -255,57 +214,38 @@ bool ITelegramBot::editMessageKeyboard(const QVariant &messageId,
|
||||
}
|
||||
|
||||
bool ITelegramBot::editSpecificMessage(const QVariant &messageId,
|
||||
const QVariant &chatId,
|
||||
const QString& newText,
|
||||
const QString &callBackQueryId,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview) {
|
||||
const TelegramArgs& args) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!messageId.isValid() || messageId.isNull())
|
||||
return false;
|
||||
|
||||
if (newText.isEmpty())
|
||||
if (args.text.isEmpty())
|
||||
return false;
|
||||
|
||||
auto msg = QSharedPointer<TelegramEditMessage>::create(messageId,
|
||||
chatId,
|
||||
newText,
|
||||
parseMode,
|
||||
disableWebPagePreview,
|
||||
callBackQueryId
|
||||
args
|
||||
);
|
||||
|
||||
|
||||
return sendMessageRequest(msg);
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendSpecificMessageWithKeyboard(const QVariant &chatId,
|
||||
const QString &text,
|
||||
const KeyboardOnMessage &keyboard,
|
||||
const QString &callBackQueryId,
|
||||
unsigned long long replyToMessageId,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview) {
|
||||
bool ITelegramBot::sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
||||
const QList<QList<QString> > &keyboard,
|
||||
bool onTimeKeyboard,
|
||||
bool autoResizeKeyboard) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (text.isEmpty()) {
|
||||
if (args.text.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto msg = QSharedPointer<TelegramSendMsg>::create(chatId,
|
||||
text,
|
||||
prepareInlineKeyBoard(keyboard),
|
||||
replyToMessageId,
|
||||
parseMode,
|
||||
callBackQueryId,
|
||||
disableWebPagePreview);
|
||||
|
||||
return sendMessageRequest(msg);
|
||||
return sendSpecificMessage(args, prepareKeyboard(autoResizeKeyboard, onTimeKeyboard, keyboard));
|
||||
}
|
||||
|
||||
QSharedPointer<iFile> ITelegramBot::getFile(const QString &fileId, iFile::Type fileType) {
|
||||
@ -391,78 +331,28 @@ QSharedPointer<QNetworkReply> ITelegramBot::getFileMeta(const QString &fileId, c
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFile(const QFileInfo &file, const QVariant &chatId) {
|
||||
return sendFileWithDescription(file, chatId, "");
|
||||
return sendFileMessage({chatId}, file);
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFile(const QByteArray &file, const QString &fileName, const QVariant &chatId) {
|
||||
return sendFileWithDescription(file, fileName, chatId, "");
|
||||
return sendFileMessage({chatId}, file, fileName);
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFileMessage(const QFileInfo &file, const TelegrammArgs &args) {
|
||||
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFileMessage(const QByteArray &file, const QString &fileName, const TelegrammArgs &args) {
|
||||
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendPhoto(const QFileInfo &photo,
|
||||
const QVariant &chatId,
|
||||
const QString &description,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const KeyboardOnMessage &keyboard) {
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QFileInfo &file) {
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!photo.isReadable()) {
|
||||
if (!file.isReadable()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return sendFileWithPrivate(
|
||||
QSharedPointer<TelegramSendPhoto>::create(chatId,
|
||||
description,
|
||||
photo,
|
||||
parseMode,
|
||||
replyToMessageId,
|
||||
prepareInlineKeyBoard(keyboard)));
|
||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||
file));
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendPhoto(const QByteArray &photo,
|
||||
const QString &fileName,
|
||||
const QVariant &chatId,
|
||||
const QString &description,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
const KeyboardOnMessage &keyboard) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!fileName.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!photo.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return sendFileWithPrivate(
|
||||
QSharedPointer<TelegramSendPhoto>::create(chatId,
|
||||
description,
|
||||
fileName,
|
||||
photo,
|
||||
parseMode,
|
||||
replyToMessageId,
|
||||
prepareInlineKeyBoard(keyboard)));
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFileWithDescription(const QByteArray &file,
|
||||
const QString &fileName,
|
||||
const QVariant &chatId,
|
||||
const QString &description) {
|
||||
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
bool ITelegramBot::sendFileMessage(const TelegramArgs &args, const QByteArray &file, const QString &fileName) {
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!fileName.size()) {
|
||||
@ -473,20 +363,47 @@ bool ITelegramBot::sendFileWithDescription(const QByteArray &file,
|
||||
return false;
|
||||
}
|
||||
|
||||
return sendFileWithPrivate(QSharedPointer<TelegramSendDocument>::create(chatId, description, fileName, file));
|
||||
return sendFileWithPrivate(QSharedPointer<TelegramSendDocument>::create(args, fileName, file));
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFileWithDescription(const QFileInfo &file,
|
||||
const QVariant &chatId,
|
||||
const QString &description) {
|
||||
if (!chatId.isValid() || chatId.isNull())
|
||||
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
||||
const QFileInfo &photo,
|
||||
const KeyboardOnMessage &keyboard) {
|
||||
if (!args.chatId.isValid() || args.chatId.isNull())
|
||||
return false;
|
||||
|
||||
if (!file.isReadable()) {
|
||||
if (!photo.isReadable()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return sendFileWithPrivate(QSharedPointer<TelegramSendDocument>::create(chatId, description, file));
|
||||
return sendFileWithPrivate(
|
||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||
photo,
|
||||
prepareInlineKeyBoard(keyboard)));
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendPhoto(const TelegramArgs &args,
|
||||
const QByteArray &photo,
|
||||
const QString &fileName,
|
||||
const KeyboardOnMessage &keyboard) {
|
||||
|
||||
if (!args.chatId.isValid() || args.chatId.isNull()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!fileName.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!photo.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return sendFileWithPrivate(
|
||||
QSharedPointer<TelegramSendPhoto>::create(args,
|
||||
fileName,
|
||||
photo,
|
||||
prepareInlineKeyBoard(keyboard)));
|
||||
}
|
||||
|
||||
bool ITelegramBot::sendFileById(const QString &fileID, const QVariant &chatId) {
|
||||
|
@ -11,7 +11,7 @@
|
||||
#define ITELEGRAMBOT_H
|
||||
|
||||
#include "ibot.h"
|
||||
#include "qTbot/telegrammargs.h"
|
||||
#include "qTbot/telegramargs.h"
|
||||
#include <QObject>
|
||||
|
||||
class QNetworkAccessManager;
|
||||
@ -54,7 +54,7 @@ public:
|
||||
*
|
||||
* @note The extraObjects parameter is a map where each key represents the object's name, and the associated value is a shared pointer to a JSON object (optional).
|
||||
*/
|
||||
bool sendSpecificMessage(const TelegrammArgs& args,
|
||||
bool sendSpecificMessage(const TelegramArgs& args,
|
||||
const qTbot::ExtraJsonObjects &extraObjects = {});
|
||||
|
||||
/**
|
||||
@ -68,7 +68,7 @@ public:
|
||||
* @note The keyboard parameter should be a list of maps where each map represents a button.
|
||||
* The button's label is the map key, and the associated callback function is the map value.
|
||||
*/
|
||||
bool sendSpecificMessageWithKeyboard(const TelegrammArgs& args,
|
||||
bool sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
||||
const KeyboardOnMessage &keyboard);
|
||||
|
||||
/**
|
||||
@ -86,7 +86,7 @@ public:
|
||||
*
|
||||
* @note By default, web page previews for links in the message are not disabled.
|
||||
*/
|
||||
bool sendSpecificMessageWithKeyboard(const TelegrammArgs& args,
|
||||
bool sendSpecificMessageWithKeyboard(const TelegramArgs& args,
|
||||
const QList<QList<QString> > &keyboard,
|
||||
bool onTimeKeyboard = false,
|
||||
bool autoResizeKeyboard = true);
|
||||
@ -109,7 +109,7 @@ public:
|
||||
* @note By default, web page previews for links in the new text are not disabled (optional).
|
||||
*/
|
||||
bool editSpecificMessageWithKeyboard(const QVariant &messageId,
|
||||
const TelegrammArgs& args,
|
||||
const TelegramArgs& args,
|
||||
const QList<QList<QString> > &keyboard = {},
|
||||
bool onTimeKeyboard = false,
|
||||
bool autoResizeKeyboard = false);
|
||||
@ -129,8 +129,8 @@ public:
|
||||
*
|
||||
* @note By default, web page previews for links in the new text are not disabled (optional).
|
||||
*/
|
||||
bool editSpecificMessageWithKeyboard(const TelegrammArgs& args,
|
||||
const QVariant& messageId,
|
||||
bool editSpecificMessageWithKeyboard(const QVariant& messageId,
|
||||
const TelegramArgs& args,
|
||||
const KeyboardOnMessage &keyboard = {});
|
||||
|
||||
/**
|
||||
@ -167,7 +167,7 @@ public:
|
||||
* @note By default, web page previews for links in the new text are not disabled (optional).
|
||||
*/
|
||||
bool editSpecificMessage(const QVariant &messageId,
|
||||
const TelegrammArgs& args);
|
||||
const TelegramArgs& args);
|
||||
|
||||
[[nodiscard("do not forget to save shared pointer of file handler, because it's will not save inner bot object.")]]
|
||||
QSharedPointer<iFile> getFile(const QString& fileId, iFile::Type fileType = iFile::Type::Ram) override;
|
||||
@ -191,7 +191,7 @@ public:
|
||||
* @param args This is general arguments of the message, include a chatID.
|
||||
* @return true if the message sents successful else false
|
||||
*/
|
||||
bool sendFileMessage( const QFileInfo& file, const TelegrammArgs& args);
|
||||
bool sendFileMessage( const TelegramArgs& args, const QFileInfo& file);
|
||||
|
||||
/**
|
||||
* @brief sendFileMessage This method sents a message with file.
|
||||
@ -200,62 +200,34 @@ public:
|
||||
* @param args This is general arguments of the message, include a chatID.
|
||||
* @return true if the message sents successful else false
|
||||
*/
|
||||
bool sendFileMessage( const QByteArray& file, const QString& fileName, const TelegrammArgs& args);
|
||||
bool sendFileMessage( const TelegramArgs& args, const QByteArray& file, const QString& fileName);
|
||||
|
||||
/**
|
||||
* @brief sendPhoto This method will send image into chat with @a chatId
|
||||
* @param args - This is structure with general arguments of the tellegram message.
|
||||
* Use This structure for sets target and another arguments.
|
||||
* @param photo this is photo path.
|
||||
* @param chatId target chat
|
||||
* @param replyToMessageId The unique identifier of the message to reply to, if any.
|
||||
* @param keyboard A list of maps where each map represents a button with a callback function (optional).
|
||||
* @return true if photo will snt successful
|
||||
*/
|
||||
bool sendPhoto(const QFileInfo& photo,
|
||||
const QVariant& chatId,
|
||||
const QString &description,
|
||||
const QString &parseMode = "html",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
bool sendPhoto(const TelegramArgs& args,
|
||||
const QFileInfo& photo,
|
||||
const KeyboardOnMessage &keyboard = {});
|
||||
|
||||
/**
|
||||
* @brief sendPhoto This method will send image into chat with @a chatId
|
||||
* @param photo this is photo data.
|
||||
* @param chatId target chat
|
||||
* @param args - This is structure with general arguments of the tellegram message.
|
||||
* Use This structure for sets target and another arguments.
|
||||
* @param fileName This is dispalyed name of photo.
|
||||
* @param replyToMessageId The unique identifier of the message to reply to, if any.
|
||||
* @param keyboard A list of maps where each map represents a button with a callback function (optional).
|
||||
* @return true if photo will snt successful
|
||||
*/
|
||||
bool sendPhoto(const QByteArray& photo,
|
||||
bool sendPhoto(const TelegramArgs &args,
|
||||
const QByteArray& photo,
|
||||
const QString& fileName,
|
||||
const QVariant& chatId,
|
||||
const QString &description, const QString &parseMode,
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const KeyboardOnMessage &keyboard = {});
|
||||
|
||||
/**
|
||||
* @brief sendFileWithDescription This method sents a byte array as a file into @a chatId with additional text @a description.
|
||||
* @param file This is a file source
|
||||
* @param fileName This is a dispalyed name of file.
|
||||
* @param chatId This is distanation id chat.
|
||||
* @param description additional text for message.
|
||||
* @return true if the message sents successful else false.
|
||||
*/
|
||||
bool sendFileWithDescription(const QByteArray& file,
|
||||
const QString& fileName,
|
||||
const QVariant& chatId,
|
||||
const QString& description);
|
||||
|
||||
/**
|
||||
* @brief sendFileWithDescription This method sents a byte array as a file into @a chatId with additional text @a description.
|
||||
* @param file This is a file source
|
||||
* @param chatId This is distanation id chat.
|
||||
* @param description additional text for message.
|
||||
* @return true if the message sents successful else false.
|
||||
*/
|
||||
bool sendFileWithDescription( const QFileInfo& file,
|
||||
const QVariant& chatId,
|
||||
const QString& description);
|
||||
/**
|
||||
* @brief sendFileById This is specific method of the telegram bot. sents file by id.
|
||||
* @param fileID This is file id.
|
||||
|
@ -5,15 +5,15 @@
|
||||
//# of this license document, but changing it is not allowed.
|
||||
//#
|
||||
|
||||
#include "telegrammargs.h"
|
||||
#include "telegramargs.h"
|
||||
namespace qTbot {
|
||||
|
||||
TelegrammArgs::TelegrammArgs(const QVariant &id,
|
||||
const QString &text,
|
||||
const QString &parseMode,
|
||||
unsigned long long replyToMessageId,
|
||||
bool disableWebPagePreview,
|
||||
const QString &callBackQueryId)
|
||||
TelegramArgs::TelegramArgs(const QVariant &id,
|
||||
const QString &text,
|
||||
unsigned long long replyToMessageId,
|
||||
const QString &parseMode,
|
||||
bool disableWebPagePreview,
|
||||
const QString &callBackQueryId)
|
||||
{
|
||||
|
||||
this->chatId = id;
|
||||
@ -24,11 +24,16 @@ TelegrammArgs::TelegrammArgs(const QVariant &id,
|
||||
this->parseMode = parseMode;
|
||||
}
|
||||
|
||||
QMap<QString, QVariant> TelegrammArgs::toMap() const {
|
||||
QMap<QString, QVariant> TelegramArgs::toMap(bool textAsCaption) const {
|
||||
QMap<QString, QVariant> args {{"chat_id", chatId}};
|
||||
|
||||
if (text.size()) {
|
||||
args["text"] = text;
|
||||
if (textAsCaption) {
|
||||
args["caption"] = text;
|
||||
|
||||
} else {
|
||||
args["text"] = text;
|
||||
}
|
||||
}
|
||||
|
||||
if (replyToMessageId) {
|
@ -5,25 +5,25 @@
|
||||
//# of this license document, but changing it is not allowed.
|
||||
//#
|
||||
|
||||
#ifndef TELEGRAMMARGS_H
|
||||
#define TELEGRAMMARGS_H
|
||||
#ifndef TELEGRAMARGS_H
|
||||
#define TELEGRAMARGS_H
|
||||
|
||||
#include <QVariant>
|
||||
|
||||
namespace qTbot {
|
||||
|
||||
/**
|
||||
* @brief The TelegrammArgs class is base structure for the all tellegram message arguments.
|
||||
* @brief The TelegramArgs class is base structure for the all tellegram message arguments.
|
||||
*/
|
||||
struct TelegrammArgs
|
||||
struct TelegramArgs
|
||||
{
|
||||
TelegrammArgs(const QVariant& id,
|
||||
const QString& text = "",
|
||||
const QString& parseMode = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
bool disableWebPagePreview = false,
|
||||
const QString& callBackQueryId = ""
|
||||
);
|
||||
TelegramArgs(const QVariant& id,
|
||||
const QString& text = "",
|
||||
unsigned long long replyToMessageId = 0,
|
||||
const QString& parseMode = "html",
|
||||
bool disableWebPagePreview = false,
|
||||
const QString& callBackQueryId = ""
|
||||
);
|
||||
|
||||
/**
|
||||
* @brief Text of the message.
|
||||
@ -63,10 +63,11 @@ struct TelegrammArgs
|
||||
|
||||
/**
|
||||
* @brief toMap convert all arguments to the map.
|
||||
* @return
|
||||
* @param textAsCaption This option force to replace text key to caption. Used on some requests as a sendDocument
|
||||
* @return list of arguments.
|
||||
*/
|
||||
QMap<QString, QVariant> toMap() const;
|
||||
QMap<QString, QVariant> toMap(bool textAsCaption = false) const;
|
||||
};
|
||||
|
||||
}
|
||||
#endif // TELEGRAMMARGS_H
|
||||
#endif // TELEGRAMARGS_H
|
Loading…
x
Reference in New Issue
Block a user