30 template<>
struct Core<
DiscordCoreAPI::CreateAutoModerationRuleData> {
32 static constexpr auto parseValue = object(
"exemptChannels", &ValueType::exemptChannels,
"exemptRoles", &ValueType::exemptRoles,
33 "triggerMetadata", &ValueType::triggerMetadata,
"actions", &ValueType::actions,
"triggerType", &ValueType::triggerType,
"eventType",
34 &ValueType::eventType,
"guildId", &ValueType::guildId,
"name", &ValueType::name,
"enabled", &ValueType::enabled);
37 template<>
struct Core<
DiscordCoreAPI::ModifyAutoModerationRuleData> {
39 static constexpr auto parseValue = object(
"exemptChannels", &ValueType::exemptChannels,
"exemptRoles", &ValueType::exemptRoles,
40 "triggerMetadata", &ValueType::triggerMetadata,
"actions", &ValueType::actions,
"autoModerationRuleId", &ValueType::autoModerationRuleId,
41 "eventType", &ValueType::eventType,
"guildId", &ValueType::guildId,
"name", &ValueType::name,
"enabled", &ValueType::enabled);
48 void AutoModerationRules::initialize(DiscordCoreInternal::HttpsClient* HttpsClientNew) {
49 AutoModerationRules::httpsClient = HttpsClientNew;
54 DiscordCoreInternal::HttpsWorkloadData workload{ DiscordCoreInternal::HttpsWorkloadType::Get_Auto_Moderation_Rules };
55 co_await NewThreadAwaitable<std::vector<AutoModerationRule>>();
56 workload.workloadClass = DiscordCoreInternal::HttpsWorkloadClass::Get;
57 workload.relativePath =
"/guilds/" + dataPackage.
guildId +
"/auto-moderation/rules";
58 workload.callStack =
"AutoModerationRules::listAutoModerationRulesForGuildAsync()";
59 AutoModerationRuleVector returnVector{};
60 AutoModerationRules::httpsClient->submitWorkloadAndGetResult<AutoModerationRuleVector>(workload, returnVector);
61 co_return returnVector;
65 DiscordCoreInternal::HttpsWorkloadData workload{ DiscordCoreInternal::HttpsWorkloadType::Get_Auto_Moderation_Rule };
66 co_await NewThreadAwaitable<AutoModerationRule>();
67 workload.workloadClass = DiscordCoreInternal::HttpsWorkloadClass::Get;
68 workload.relativePath =
"/guilds/" + dataPackage.
guildId +
"/auto-moderation/rules/" + std::to_string(dataPackage.
autoModerationRuleId);
69 workload.callStack =
"AutoModerationRules::getAutoModerationRuleAsync()";
71 AutoModerationRules::httpsClient->submitWorkloadAndGetResult<
AutoModerationRule>(workload, returnData);
76 DiscordCoreInternal::HttpsWorkloadData workload{ DiscordCoreInternal::HttpsWorkloadType::Post_Auto_Moderation_Rule };
77 co_await NewThreadAwaitable<AutoModerationRule>();
78 workload.workloadClass = DiscordCoreInternal::HttpsWorkloadClass::Post;
79 workload.relativePath =
"/guilds/" + dataPackage.
guildId +
"/auto-moderation/rules";
80 Jsonifier::JsonifierCore parser{};
81 parser.serializeJson(dataPackage, workload.content);
82 workload.callStack =
"AutoModerationRules::createAutoModerationRuleAsync()";
84 AutoModerationRules::httpsClient->submitWorkloadAndGetResult<
AutoModerationRule>(workload, returnData);
89 DiscordCoreInternal::HttpsWorkloadData workload{ DiscordCoreInternal::HttpsWorkloadType::Patch_Auto_Moderation_Rule };
90 co_await NewThreadAwaitable<AutoModerationRule>();
91 workload.workloadClass = DiscordCoreInternal::HttpsWorkloadClass::Patch;
92 workload.relativePath =
"/guilds/" + dataPackage.
guildId +
"/auto-moderation/rules/" + std::to_string(dataPackage.
autoModerationRuleId);
93 Jsonifier::JsonifierCore parser{};
94 parser.serializeJson(dataPackage, workload.content);
95 workload.callStack =
"AutoModerationRules::modifyAutoModerationRuleAsync()";
97 AutoModerationRules::httpsClient->submitWorkloadAndGetResult<
AutoModerationRule>(workload, returnData);
102 DiscordCoreInternal::HttpsWorkloadData workload{ DiscordCoreInternal::HttpsWorkloadType::Delete_Auto_Moderation_Rule };
103 co_await NewThreadAwaitable<void>();
104 workload.workloadClass = DiscordCoreInternal::HttpsWorkloadClass::Delete;
105 workload.relativePath =
"/guilds/" + dataPackage.
guildId +
"/auto-moderation/rules/" + std::to_string(dataPackage.
autoModerationRuleId);
106 workload.callStack =
"AutoModerationRules::deleteAutoModerationRuleAsync()";
107 AutoModerationRules::httpsClient->submitWorkloadAndGetResult<
void>(workload);
111 DiscordCoreInternal::HttpsClient* AutoModerationRules::httpsClient{};
The main namespace for this library.
For listing all of the auto-moderation-rules for a particular Guild .
Snowflake guildId
The id of the Guild for which you would like to list the auto-moderation rules.
For collecting an auto-moderation-rule for a particular AutoModerationRule.
uint64_t autoModerationRuleId
The id of the auto-moderation-rule you would like to collect.
Snowflake guildId
The id of the Guild from which you would like to collect the auto-moderation-rule from.
For creating an auto-moderation-rule.
Snowflake guildId
The Guild within which to create the AutoModerationRule.
For modifying an auto-moderation-rule.
Snowflake guildId
The AutoModerationRule within which to modify the auto-moderation-rule.
uint64_t autoModerationRuleId
The id of the auto-moderation-rule you would like to modify.
For deleting an auto-moderation-rule.
uint64_t autoModerationRuleId
The id of the auto-moderation-rule you would like to delete.
Snowflake guildId
Guild within which to delete the auto-moderation-rule.
CoRoutine< void > deleteAutoModerationRuleAsync(DeleteAutoModerationRuleData dataPackage)
Delete a particular Auto-Moderation-Rule.
CoRoutine< AutoModerationRule > modifyAutoModerationRuleAsync(ModifyAutoModerationRuleData dataPackage)
Modify a particular Auto-Moderation-Rule.
CoRoutine< AutoModerationRule > createAutoModerationRuleAsync(CreateAutoModerationRuleData dataPackage)
Create a particular Auto-Moderation-Rule.
CoRoutine< std::vector< AutoModerationRule > > listAutoModerationRulesForGuildAsync(ListAutoModerationRulesForGuildData dataPackage)
Get all of the Guild's Auto-Moderation-Rules.
CoRoutine< AutoModerationRule > getAutoModerationRuleAsync(GetAutoModerationRuleData dataPackage)
Get a particular Auto-Moderation-Rule.
A CoRoutine - representing a potentially asynchronous operation/function.
Represents an auto-moderation-rule.