mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
Improve sub/resub message parsing
Instead of regexping out the username, use the existing ircv3 login-tag
This commit is contained in:
parent
791187e688
commit
7c81477c35
|
@ -228,16 +228,24 @@ void IrcMessageHandler::handleWhisperMessage(Communi::IrcMessage *message)
|
||||||
void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message, TwitchServer &server)
|
void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message, TwitchServer &server)
|
||||||
{
|
{
|
||||||
auto data = message->toData();
|
auto data = message->toData();
|
||||||
static QRegularExpression findMessage(" USERNOTICE (#\\w+) :(.+)$");
|
|
||||||
|
|
||||||
auto match = findMessage.match(data);
|
|
||||||
auto target = match.captured(1);
|
|
||||||
|
|
||||||
if (match.hasMatch()) {
|
|
||||||
this->addMessage(message, target, match.captured(2), server, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto tags = message->tags();
|
auto tags = message->tags();
|
||||||
|
auto parameters = message->parameters();
|
||||||
|
|
||||||
|
auto target = parameters[0];
|
||||||
|
QString msgType = tags.value("msg-id", "").toString();
|
||||||
|
QString content;
|
||||||
|
if (parameters.size() >= 2) {
|
||||||
|
content = parameters[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msgType == "sub" || msgType == "resub" || msgType == "subgift") {
|
||||||
|
// Sub-specific message. I think it's only allowed for "resub" messages atm
|
||||||
|
if (!content.isEmpty()) {
|
||||||
|
this->addMessage(message, target, content, server, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto it = tags.find("system-msg");
|
auto it = tags.find("system-msg");
|
||||||
|
|
||||||
if (it != tags.end()) {
|
if (it != tags.end()) {
|
||||||
|
|
|
@ -288,19 +288,10 @@ void TwitchMessageBuilder::parseUsername()
|
||||||
// username
|
// username
|
||||||
this->userName = this->ircMessage->nick();
|
this->userName = this->ircMessage->nick();
|
||||||
|
|
||||||
if (this->userName.isEmpty()) {
|
if (this->userName.isEmpty() || this->args.trimSubscriberUsername) {
|
||||||
this->userName = this->tags.value(QLatin1String("login")).toString();
|
this->userName = this->tags.value(QLatin1String("login")).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->args.trimSubscriberUsername) {
|
|
||||||
static QRegularExpression fixName("^tmi.twitch.tv\\((\\w+)\\)$");
|
|
||||||
|
|
||||||
auto match = fixName.match(this->userName);
|
|
||||||
if (match.hasMatch()) {
|
|
||||||
this->userName = match.captured(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// display name
|
// display name
|
||||||
// auto displayNameVariant = this->tags.value("display-name");
|
// auto displayNameVariant = this->tags.value("display-name");
|
||||||
// if (displayNameVariant.isValid()) {
|
// if (displayNameVariant.isValid()) {
|
||||||
|
|
Loading…
Reference in a new issue