добавил обработку счетчиков
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QRegularExpression>
|
||||
#include <QSet>
|
||||
|
||||
// EmoteProvider implementation
|
||||
EmoteProvider::EmoteProvider(QObject *parent)
|
||||
@@ -416,3 +418,52 @@ void SevenTVProvider::parseCustomResponse(const QByteArray &data, const QString
|
||||
QString("Loaded %1 custom emotes for user %2").arg(m_emotes.size()).arg(userId),
|
||||
LOG_INFO);
|
||||
}
|
||||
|
||||
QString BTTVProvider::cleanMessage(const QString& message) const
|
||||
{
|
||||
if (m_emotes.isEmpty())
|
||||
return message;
|
||||
|
||||
// Собираем все коды эмоций в множество для быстрого поиска
|
||||
QSet<QString> codes;
|
||||
for (const BTTVEmote& emote : m_emotes) {
|
||||
codes.insert(emote.code);
|
||||
}
|
||||
|
||||
// Разбиваем сообщение на токены (слова и не-слова)
|
||||
QRegularExpression wordSplitter("(\\w+|[^\\w]+)");
|
||||
QRegularExpressionMatchIterator it = wordSplitter.globalMatch(message);
|
||||
QStringList parts;
|
||||
while (it.hasNext()) {
|
||||
QRegularExpressionMatch match = it.next();
|
||||
QString token = match.captured(0);
|
||||
// Если токен состоит только из букв/цифр и является кодом эмоции – пропускаем
|
||||
if (token[0].isLetterOrNumber() && codes.contains(token))
|
||||
continue;
|
||||
parts.append(token);
|
||||
}
|
||||
return parts.join("");
|
||||
}
|
||||
|
||||
QString SevenTVProvider::cleanMessage(const QString& message) const
|
||||
{
|
||||
if (m_emotes.isEmpty())
|
||||
return message;
|
||||
|
||||
QSet<QString> codes;
|
||||
for (const SevenTVEmote& emote : m_emotes) {
|
||||
codes.insert(emote.code);
|
||||
}
|
||||
|
||||
QRegularExpression wordSplitter("(\\w+|[^\\w]+)");
|
||||
QRegularExpressionMatchIterator it = wordSplitter.globalMatch(message);
|
||||
QStringList parts;
|
||||
while (it.hasNext()) {
|
||||
QRegularExpressionMatch match = it.next();
|
||||
QString token = match.captured(0);
|
||||
if (token[0].isLetterOrNumber() && codes.contains(token))
|
||||
continue;
|
||||
parts.append(token);
|
||||
}
|
||||
return parts.join("");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user