v0.7.43 - Add plain text 'status' command handler for NIP-17 DMs

This commit is contained in:
Your Name
2025-10-27 13:19:10 -04:00
parent 5242f066e7
commit edbc4f1359
12 changed files with 1150 additions and 8 deletions

View File

@@ -368,13 +368,17 @@ cJSON* process_nip17_admin_message(cJSON* gift_wrap_event, char* error_message,
if (success_dm) {
cJSON* success_gift_wraps[1];
// Get timestamp delay configuration
long max_delay_sec = get_config_int("nip59_timestamp_max_delay_sec", 0);
int send_result = nostr_nip17_send_dm(
success_dm, // dm_event
(const char**)&sender_pubkey, // recipient_pubkeys
1, // num_recipients
relay_privkey, // sender_private_key
success_gift_wraps, // gift_wraps_out
1 // max_gift_wraps
1, // max_gift_wraps
max_delay_sec // max_delay_sec
);
cJSON_Delete(success_dm);
@@ -565,6 +569,35 @@ int process_nip17_admin_command(cJSON* dm_event, char* error_message, size_t err
DEBUG_INFO("DM_ADMIN: Config command processed successfully");
return 0;
}
// Check for status commands
else if (strstr(content_lower, "status") != NULL) {
DEBUG_INFO("DM_ADMIN: Processing status command");
// Create synthetic event for system_command handler
cJSON* synthetic_event = cJSON_CreateObject();
cJSON_AddNumberToObject(synthetic_event, "kind", 23456);
cJSON_AddStringToObject(synthetic_event, "pubkey", sender_pubkey);
// Create tags array with system_command
cJSON* tags = cJSON_CreateArray();
cJSON* cmd_tag = cJSON_CreateArray();
cJSON_AddItemToArray(cmd_tag, cJSON_CreateString("system_command"));
cJSON_AddItemToArray(cmd_tag, cJSON_CreateString("system_status"));
cJSON_AddItemToArray(tags, cmd_tag);
cJSON_AddItemToObject(synthetic_event, "tags", tags);
char error_msg[256];
int result = handle_system_command_unified(synthetic_event, "system_status", error_msg, sizeof(error_msg), wsi);
cJSON_Delete(synthetic_event);
if (result != 0) {
DEBUG_ERROR(error_msg);
return -1;
}
DEBUG_INFO("DM_ADMIN: Status command processed successfully");
return 0;
}
else {
DEBUG_INFO("DM_ADMIN: Checking for confirmation or config change requests");
// Check if it's a confirmation response (yes/no)