From 4d1f6eb6b56de472e5384d7860c7ddd19da33dc5 Mon Sep 17 00:00:00 2001 From: Haonan Chen Date: Fri, 26 Dec 2025 13:35:01 +0800 Subject: [PATCH] packages.misskey-forwarder: fix --- packages/misskey-forwarder/.gitignore | 1 + packages/misskey-forwarder/CMakeLists.txt | 4 ++- packages/misskey-forwarder/src/main.cpp | 38 +++++++++++++++-------- 3 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 packages/misskey-forwarder/.gitignore diff --git a/packages/misskey-forwarder/.gitignore b/packages/misskey-forwarder/.gitignore new file mode 100644 index 00000000..5b6b0720 --- /dev/null +++ b/packages/misskey-forwarder/.gitignore @@ -0,0 +1 @@ +config.yaml diff --git a/packages/misskey-forwarder/CMakeLists.txt b/packages/misskey-forwarder/CMakeLists.txt index b95a6727..0b08a42f 100644 --- a/packages/misskey-forwarder/CMakeLists.txt +++ b/packages/misskey-forwarder/CMakeLists.txt @@ -15,7 +15,9 @@ find_package(httplib REQUIRED) add_executable(misskey-forwarder src/main.cpp) target_link_libraries(misskey-forwarder PRIVATE biu::biu httplib::httplib) target_compile_features(misskey-forwarder PRIVATE cxx_std_23) -target_compile_definitions(misskey-forwarder PRIVATE FORWARDER_CONFIG_FILE="${FORWARDER_CONFIG_FILE}") +if(DEFINED FORWARDER_CONFIG_FILE) + target_compile_definitions(misskey-forwarder PRIVATE FORWARDER_CONFIG_FILE="${FORWARDER_CONFIG_FILE}") +endif() install(TARGETS misskey-forwarder RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) get_property(ImportedTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS) diff --git a/packages/misskey-forwarder/src/main.cpp b/packages/misskey-forwarder/src/main.cpp index b83cc5b3..674f1068 100644 --- a/packages/misskey-forwarder/src/main.cpp +++ b/packages/misskey-forwarder/src/main.cpp @@ -2,7 +2,7 @@ # include # include # ifndef FORWARDER_CONFIG_FILE -# define FORWARDER_CONFIG_FILE "./config.yml" +# define FORWARDER_CONFIG_FILE "./config.yaml" # endif int main() @@ -16,8 +16,7 @@ int main() std::string TelegramBotToken; std::string TelegramChatId; int ServerPort; - }; - auto config = YAML::LoadFile(FORWARDER_CONFIG_FILE).as(); + } config = YAML::LoadFile(FORWARDER_CONFIG_FILE).as(); biu::Logger::try_exec([&] { @@ -33,25 +32,38 @@ int main() struct Content { std::string type, server; - struct { struct + struct { - std::string text, visibility; - struct Renote { std::string id; }; - std::optional renote; - } note; } body; + struct Note + { + std::string text, visibility; + std::optional replyId; + struct Renote { std::string id; }; + std::optional renote; + }; + std::optional note; + } body; }; auto content = YAML::Load(req.body).as(); - if (content.type != "note" || content.body.note.visibility != "public") return; - std::string text = content.body.note.text; - if (content.body.note.renote) - text += "\n🔁 Renote: {}/notes/{}"_f(content.server, content.body.note.renote->id); + if + ( + content.type != "note" // 只转发 note 的情况 + || !content.body.note // 大概不会发生,但还是判断一下 + || content.body.note->visibility != "public" // 只转发公开的 note + || content.body.note->replyId // 不转发回复 + ) return; + std::string text = content.body.note->text; + if (content.body.note->renote) + text += "\n🔁 Renote: {}/notes/{}"_f(content.server, content.body.note->renote->id); TgBot::Bot bot(config.TelegramBotToken); - bot.getApi().sendMessage(config.TelegramChatId, text); + // bot.getApi().sendMessage(config.TelegramChatId, text); res.status = 200; res.body = "OK"; + + log.debug(req.body); }); }); svr.listen("0.0.0.0", config.ServerPort);