mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-04-26 00:01:13 -05:00
Refactor Twitch condition event handling
This commit is contained in:
parent
d8807077da
commit
41c06b9edb
|
|
@ -368,6 +368,7 @@ void MacroActionTwitch::GetRewardInfo(const std::shared_ptr<TwitchToken> &token)
|
||||||
variable->Value().c_str());
|
variable->Value().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
httplib::Params params = {
|
httplib::Params params = {
|
||||||
|
|
|
||||||
|
|
@ -259,31 +259,13 @@ void MacroConditionTwitch::ResetChatConnection()
|
||||||
|
|
||||||
bool MacroConditionTwitch::CheckChannelGenericEvents()
|
bool MacroConditionTwitch::CheckChannelGenericEvents()
|
||||||
{
|
{
|
||||||
if (!_eventBuffer) {
|
return HandleMatchingSubscriptionEvents([this](const Event &event) {
|
||||||
return false;
|
SetVariableValue(event.ToString());
|
||||||
}
|
SetJsonTempVars(event.data,
|
||||||
|
|
||||||
while (!_eventBuffer->Empty()) {
|
|
||||||
auto event = _eventBuffer->ConsumeMessage();
|
|
||||||
if (!event) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (_subscriptionID != event->id) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
SetVariableValue(event->ToString());
|
|
||||||
SetJsonTempVars(event->data,
|
|
||||||
[this](const char *id, const char *value) {
|
[this](const char *id, const char *value) {
|
||||||
SetTempVarValue(id, value);
|
SetTempVarValue(id, value);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
if (_clearBufferOnMatch) {
|
|
||||||
_eventBuffer->Clear();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MacroConditionTwitch::CheckChannelLiveEvents()
|
bool MacroConditionTwitch::CheckChannelLiveEvents()
|
||||||
|
|
@ -327,7 +309,77 @@ bool MacroConditionTwitch::CheckChannelLiveEvents()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MacroConditionTwitch::CheckChannelRewardChangeEvents()
|
||||||
|
{
|
||||||
|
return HandleMatchingSubscriptionEvents([this](const Event &event) {
|
||||||
|
SetVariableValue(event.ToString());
|
||||||
|
SetJsonTempVars(event.data,
|
||||||
|
[this](const char *id, const char *value) {
|
||||||
|
SetTempVarValue(id, value);
|
||||||
|
});
|
||||||
|
|
||||||
|
OBSDataAutoRelease image =
|
||||||
|
obs_data_get_obj(event.data, "image");
|
||||||
|
SetTempVarValue("image.url_4x",
|
||||||
|
obs_data_get_string(image, "url_4x"));
|
||||||
|
|
||||||
|
OBSDataAutoRelease default_image =
|
||||||
|
obs_data_get_obj(event.data, "default_image");
|
||||||
|
SetTempVarValue("default_image.url_4x",
|
||||||
|
obs_data_get_string(default_image, "url_4x"));
|
||||||
|
|
||||||
|
OBSDataAutoRelease max_per_stream =
|
||||||
|
obs_data_get_obj(event.data, "max_per_stream");
|
||||||
|
SetTempVarValue("max_per_stream.is_enabled",
|
||||||
|
obs_data_get_bool(max_per_stream,
|
||||||
|
"is_enabled"));
|
||||||
|
SetTempVarValue("max_per_stream.max_per_stream",
|
||||||
|
std::to_string(obs_data_get_int(max_per_stream,
|
||||||
|
"value")));
|
||||||
|
|
||||||
|
OBSDataAutoRelease max_per_user_per_stream =
|
||||||
|
obs_data_get_obj(event.data, "max_per_user_per_stream");
|
||||||
|
SetTempVarValue("max_per_user_per_stream.is_enabled",
|
||||||
|
obs_data_get_bool(max_per_user_per_stream,
|
||||||
|
"is_enabled"));
|
||||||
|
SetTempVarValue(
|
||||||
|
"max_per_user_per_stream.max_per_user_per_stream",
|
||||||
|
std::to_string(obs_data_get_int(max_per_user_per_stream,
|
||||||
|
"value")));
|
||||||
|
|
||||||
|
OBSDataAutoRelease global_cooldown =
|
||||||
|
obs_data_get_obj(event.data, "global_cooldown");
|
||||||
|
SetTempVarValue("global_cooldown.is_enabled",
|
||||||
|
obs_data_get_bool(global_cooldown,
|
||||||
|
"is_enabled"));
|
||||||
|
SetTempVarValue(
|
||||||
|
"max_per_user_per_stream.global_cooldown_seconds",
|
||||||
|
std::to_string(obs_data_get_int(max_per_user_per_stream,
|
||||||
|
"seconds")));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
bool MacroConditionTwitch::CheckChannelRewardRedemptionEvents()
|
bool MacroConditionTwitch::CheckChannelRewardRedemptionEvents()
|
||||||
|
{
|
||||||
|
return HandleMatchingSubscriptionEvents([this](const Event &event) {
|
||||||
|
SetVariableValue(event.ToString());
|
||||||
|
SetJsonTempVars(event.data,
|
||||||
|
[this](const char *id, const char *value) {
|
||||||
|
SetTempVarValue(id, value);
|
||||||
|
});
|
||||||
|
OBSDataAutoRelease rewardInfo =
|
||||||
|
obs_data_get_obj(event.data, "reward");
|
||||||
|
SetJsonTempVars(rewardInfo, [this](const char *nestedId,
|
||||||
|
const char *value) {
|
||||||
|
const std::string id =
|
||||||
|
"reward." + std::string(nestedId);
|
||||||
|
SetTempVarValue(id, value);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MacroConditionTwitch::HandleMatchingSubscriptionEvents(
|
||||||
|
const std::function<void(const Event &)> &matchCb)
|
||||||
{
|
{
|
||||||
if (!_eventBuffer) {
|
if (!_eventBuffer) {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -341,18 +393,7 @@ bool MacroConditionTwitch::CheckChannelRewardRedemptionEvents()
|
||||||
if (_subscriptionID != event->id) {
|
if (_subscriptionID != event->id) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SetVariableValue(event->ToString());
|
matchCb(*event);
|
||||||
SetJsonTempVars(event->data,
|
|
||||||
[this](const char *id, const char *value) {
|
|
||||||
SetTempVarValue(id, value);
|
|
||||||
});
|
|
||||||
OBSDataAutoRelease rewardInfo =
|
|
||||||
obs_data_get_obj(event->data, "reward");
|
|
||||||
SetJsonTempVars(rewardInfo, [this](const char *nestedId,
|
|
||||||
const char *value) {
|
|
||||||
std::string id = "reward." + std::string(nestedId);
|
|
||||||
SetTempVarValue(id, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (_clearBufferOnMatch) {
|
if (_clearBufferOnMatch) {
|
||||||
_eventBuffer->Clear();
|
_eventBuffer->Clear();
|
||||||
|
|
@ -622,14 +663,15 @@ bool MacroConditionTwitch::CheckCondition()
|
||||||
case Condition::CHARITY_CAMPAIGN_END_EVENT:
|
case Condition::CHARITY_CAMPAIGN_END_EVENT:
|
||||||
case Condition::SHIELD_MODE_START_EVENT:
|
case Condition::SHIELD_MODE_START_EVENT:
|
||||||
case Condition::SHIELD_MODE_END_EVENT:
|
case Condition::SHIELD_MODE_END_EVENT:
|
||||||
case Condition::POINTS_REWARD_ADDITION_EVENT:
|
|
||||||
case Condition::POINTS_REWARD_UPDATE_EVENT:
|
|
||||||
case Condition::POINTS_REWARD_DELETION_EVENT:
|
|
||||||
case Condition::USER_BAN_EVENT:
|
case Condition::USER_BAN_EVENT:
|
||||||
case Condition::USER_UNBAN_EVENT:
|
case Condition::USER_UNBAN_EVENT:
|
||||||
case Condition::USER_MODERATOR_ADDITION_EVENT:
|
case Condition::USER_MODERATOR_ADDITION_EVENT:
|
||||||
case Condition::USER_MODERATOR_DELETION_EVENT:
|
case Condition::USER_MODERATOR_DELETION_EVENT:
|
||||||
return CheckChannelGenericEvents();
|
return CheckChannelGenericEvents();
|
||||||
|
case Condition::POINTS_REWARD_ADDITION_EVENT:
|
||||||
|
case Condition::POINTS_REWARD_UPDATE_EVENT:
|
||||||
|
case Condition::POINTS_REWARD_DELETION_EVENT:
|
||||||
|
return CheckChannelRewardChangeEvents();
|
||||||
case Condition::POINTS_REWARD_REDEMPTION_EVENT:
|
case Condition::POINTS_REWARD_REDEMPTION_EVENT:
|
||||||
case Condition::POINTS_REWARD_REDEMPTION_UPDATE_EVENT:
|
case Condition::POINTS_REWARD_REDEMPTION_UPDATE_EVENT:
|
||||||
return CheckChannelRewardRedemptionEvents();
|
return CheckChannelRewardRedemptionEvents();
|
||||||
|
|
@ -1211,15 +1253,27 @@ void MacroConditionTwitch::SetupTempVars()
|
||||||
setupTempVarHelper("is_user_input_required", ".reward");
|
setupTempVarHelper("is_user_input_required", ".reward");
|
||||||
setupTempVarHelper("should_redemptions_skip_request_queue",
|
setupTempVarHelper("should_redemptions_skip_request_queue",
|
||||||
".reward");
|
".reward");
|
||||||
setupTempVarHelper("max_per_stream", ".reward");
|
|
||||||
setupTempVarHelper("max_per_user_per_stream", ".reward");
|
|
||||||
setupTempVarHelper("background_color", ".reward");
|
setupTempVarHelper("background_color", ".reward");
|
||||||
setupTempVarHelper("image", ".reward");
|
setupTempVarHelper("image", ".reward");
|
||||||
|
setupTempVarHelper("image.url_4x", ".reward");
|
||||||
setupTempVarHelper("default_image", ".reward");
|
setupTempVarHelper("default_image", ".reward");
|
||||||
setupTempVarHelper("global_cooldown", ".reward");
|
setupTempVarHelper("default_image.url_4x", ".reward");
|
||||||
setupTempVarHelper("cooldown_expires_at", ".reward");
|
setupTempVarHelper("cooldown_expires_at", ".reward");
|
||||||
setupTempVarHelper("redemptions_redeemed_current_stream",
|
setupTempVarHelper("redemptions_redeemed_current_stream",
|
||||||
".reward");
|
".reward");
|
||||||
|
setupTempVarHelper("max_per_stream", ".reward");
|
||||||
|
setupTempVarHelper("max_per_stream.is_enabled", ".reward");
|
||||||
|
setupTempVarHelper("max_per_stream.max_per_stream", ".reward");
|
||||||
|
setupTempVarHelper("max_per_user_per_stream", ".reward");
|
||||||
|
setupTempVarHelper("max_per_user_per_stream.is_enabled",
|
||||||
|
".reward");
|
||||||
|
setupTempVarHelper(
|
||||||
|
"max_per_user_per_stream.max_per_user_per_stream",
|
||||||
|
".reward");
|
||||||
|
setupTempVarHelper("global_cooldown", ".reward");
|
||||||
|
setupTempVarHelper("global_cooldown.is_enabled", ".reward");
|
||||||
|
setupTempVarHelper("global_cooldown.global_cooldown_seconds",
|
||||||
|
".reward");
|
||||||
break;
|
break;
|
||||||
case Condition::POINTS_REWARD_REDEMPTION_EVENT:
|
case Condition::POINTS_REWARD_REDEMPTION_EVENT:
|
||||||
case Condition::POINTS_REWARD_REDEMPTION_UPDATE_EVENT:
|
case Condition::POINTS_REWARD_REDEMPTION_UPDATE_EVENT:
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,11 @@ public:
|
||||||
private:
|
private:
|
||||||
bool CheckChannelGenericEvents();
|
bool CheckChannelGenericEvents();
|
||||||
bool CheckChannelLiveEvents();
|
bool CheckChannelLiveEvents();
|
||||||
|
bool CheckChannelRewardChangeEvents();
|
||||||
bool CheckChannelRewardRedemptionEvents();
|
bool CheckChannelRewardRedemptionEvents();
|
||||||
bool CheckChatMessages(TwitchToken &token);
|
bool CheckChatMessages(TwitchToken &token);
|
||||||
|
bool HandleMatchingSubscriptionEvents(
|
||||||
|
const std::function<void(const Event &)> &matchCb);
|
||||||
bool CheckChatUserJoinOrLeave(TwitchToken &token);
|
bool CheckChatUserJoinOrLeave(TwitchToken &token);
|
||||||
|
|
||||||
void RegisterEventSubscription();
|
void RegisterEventSubscription();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user