Handle bits badge tier notification messages (#2611)

This commit is contained in:
Paweł
2021-04-11 14:17:21 +02:00
committed by GitHub
parent 24a33709e6
commit e741744254
4 changed files with 41 additions and 12 deletions
+33 -12
View File
@@ -14,6 +14,7 @@
#include "singletons/Settings.hpp"
#include "singletons/WindowManager.hpp"
#include "util/FormatTime.hpp"
#include "util/Helpers.hpp"
#include "util/IrcHelpers.hpp"
#include <IrcMessage>
@@ -579,10 +580,11 @@ std::vector<MessagePtr> IrcMessageHandler::parseUserNoticeMessage(
content = parameters[1];
}
if (msgType == "sub" || msgType == "resub" || msgType == "subgift")
if (msgType == "sub" || msgType == "resub" || msgType == "subgift" ||
msgType == "bitsbadgetier")
{
// Sub-specific message. I think it's only allowed for "resub" messages
// atm
// Sub-specific and bits badge upgrade specific message.
// It's only allowed for "resub" messages.
if (!content.isEmpty())
{
MessageParseArgs args;
@@ -600,9 +602,18 @@ std::vector<MessagePtr> IrcMessageHandler::parseUserNoticeMessage(
if (it != tags.end())
{
auto b =
MessageBuilder(systemMessage, parseTagString(it.value().toString()),
calculateMessageTimestamp(message));
QString messageText = it.value().toString();
if (msgType == "bitsbadgetier")
{
messageText = QString("%1 just earned a new %2 Bits badge!")
.arg(tags.value("display-name").toString())
.arg(kFormatNumbers(
tags.value("msg-param-threshold").toInt()));
}
auto b = MessageBuilder(systemMessage, parseTagString(messageText),
calculateMessageTimestamp(message));
b->flags.set(MessageFlag::Subscription);
auto newMessage = b.release();
@@ -628,10 +639,11 @@ void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
content = parameters[1];
}
if (msgType == "sub" || msgType == "resub" || msgType == "subgift")
if (msgType == "sub" || msgType == "resub" || msgType == "subgift" ||
msgType == "bitsbadgetier")
{
// Sub-specific message. I think it's only allowed for "resub" messages
// atm
// Sub-specific and bits badge upgrade specific message.
// It's only allowed for "resub" messages.
if (!content.isEmpty())
{
this->addMessage(message, target, content, server, true, false);
@@ -642,9 +654,18 @@ void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
if (it != tags.end())
{
auto b =
MessageBuilder(systemMessage, parseTagString(it.value().toString()),
calculateMessageTimestamp(message));
QString messageText = it.value().toString();
if (msgType == "bitsbadgetier")
{
messageText = QString("%1 just earned a new %2 Bits badge!")
.arg(tags.value("display-name").toString())
.arg(kFormatNumbers(
tags.value("msg-param-threshold").toInt()));
}
auto b = MessageBuilder(systemMessage, parseTagString(messageText),
calculateMessageTimestamp(message));
b->flags.set(MessageFlag::Subscription);
auto newMessage = b.release();