#include "telegrambotbase.h" #include #include TelegramBotBase::TelegramBotBase(QObject *parent) : QObject(parent) { // connect(&api, SIGNAL(newMessage(TelegramBotAPI::Message)), this, SLOT(processMessage(TelegramBotAPI::Message)), Qt::QueuedConnection); connect(&api, SIGNAL(newMessage(TelegramBotAPI::Message)), this, SLOT(processMessage(TelegramBotAPI::Message))); } void TelegramBotBase::sendMessageToAll(const QString &message) { QList keys = users.keys(); foreach (uint cid, keys) { if (users[cid].logged_in) api.sendMessage(cid, message); } } void TelegramBotBase::processMessage(TelegramBotAPI::Message msg) { // QApplication::processEvents(); qDebug() << "[TelegramBotBase]" << msg.text; uint cid = msg.chat_id; User m; m.user_id = msg.user_id; m.user_name = msg.user_name; m.last_timestamp = msg.time; if (!users.contains(cid)) users[cid] = m; if (users[cid].logged_in) { if (msg.text == "/help") { api.sendMessage(cid, help()); return; } messageFromUser(cid, msg.text); } else { if (loginUser(cid, msg.text)) { users[cid].logged_in = true; api.sendMessage(cid, welcome(cid)); newUser(cid, users[cid]); } else { api.sendMessage(cid, loginMessage(cid)); } return; } } QString TelegramBotBase::welcome(uint id) { User user = getUser(id); return tr("Hello %1! I am @%2.").arg(user.user_name).arg(api.botName()); } QString TelegramBotBase::loginMessage(uint) { return tr("Please send me /start"); } QString TelegramBotBase::help() { return tr("Sorry, /help not implemented in @%1.").arg(api.botName()); } bool TelegramBotBase::loginUser(uint , const QString &msg) { return (msg == "/start"); } void TelegramBotBase::messageFromUser(uint id, const QString &msg) { if (msg.toLower() == "ping") api.sendMessage(id, "pong"); } void TelegramBotBase::newUser(uint, User) {} void TelegramBotBase::disconnectUser(uint id) { users.remove(id); }