first commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#ifndef USER_H
|
||||
#define USER_H
|
||||
|
||||
#include <QString>
|
||||
#include <QDate>
|
||||
#include <QDateTime>
|
||||
#include <QVector>
|
||||
|
||||
struct UserBadge {
|
||||
QString name;
|
||||
int version;
|
||||
|
||||
UserBadge(const QString &name = "", int version = 0)
|
||||
: name(name), version(version) {}
|
||||
};
|
||||
|
||||
struct User {
|
||||
QString id;
|
||||
QString login;
|
||||
QString displayName;
|
||||
QString color;
|
||||
QDate followAt;
|
||||
QDate createdAt;
|
||||
QDateTime lastMessageTime;
|
||||
QVector<UserBadge> badges;
|
||||
|
||||
// Статусы
|
||||
bool isModerator;
|
||||
bool isVIP;
|
||||
bool isSubscriber;
|
||||
bool isTurbo;
|
||||
bool returningChatter;
|
||||
bool firstMsg;
|
||||
|
||||
// Статистика
|
||||
int messageCount;
|
||||
int warnCount;
|
||||
|
||||
User()
|
||||
: followAt(QDate(1900, 1, 1))
|
||||
, createdAt(QDate(1900, 1, 1))
|
||||
, lastMessageTime(QDateTime::fromSecsSinceEpoch(0))
|
||||
, isModerator(false)
|
||||
, isVIP(false)
|
||||
, isSubscriber(false)
|
||||
, isTurbo(false)
|
||||
, returningChatter(false)
|
||||
, firstMsg(false)
|
||||
, messageCount(0)
|
||||
, warnCount(0)
|
||||
{}
|
||||
|
||||
// Проверка наличия бейджа
|
||||
bool hasBadge(const QString &badgeName) const {
|
||||
for (const auto &badge : badges) {
|
||||
if (badge.name == badgeName) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Получение версии бейджа
|
||||
int badgeVersion(const QString &badgeName) const {
|
||||
for (const auto &badge : badges) {
|
||||
if (badge.name == badgeName) {
|
||||
return badge.version;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Обновление из TwitchMessage
|
||||
void updateFromTwitchMessage(const class TwitchMessage &msg);
|
||||
|
||||
// Строковое представление статусов
|
||||
QString getStatusString() const {
|
||||
QStringList statuses;
|
||||
if (isModerator) statuses << "Модератор";
|
||||
if (isVIP) statuses << "VIP";
|
||||
if (isSubscriber) statuses << "Подписчик";
|
||||
if (returningChatter) statuses << "Возвращающийся";
|
||||
if (firstMsg) statuses << "Первое сообщение";
|
||||
|
||||
return statuses.join(", ");
|
||||
}
|
||||
|
||||
// Полный список бейджей как строка
|
||||
QString getBadgesString() const {
|
||||
QStringList badgeStrings;
|
||||
for (const auto &badge : badges) {
|
||||
badgeStrings << QString("%1/%2").arg(badge.name).arg(badge.version);
|
||||
}
|
||||
return badgeStrings.join(",");
|
||||
}
|
||||
};
|
||||
|
||||
#endif // USER_H
|
||||
Reference in New Issue
Block a user