99 lines
2.5 KiB
C
99 lines
2.5 KiB
C
#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
|