From ee9418b7cffd800c5d3dd5f27f26362b4f22294f Mon Sep 17 00:00:00 2001 From: dela Date: Thu, 5 Feb 2026 10:40:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A7=81=E8=81=8Apost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++------ internal/telegram/handlers_post.go | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index b6de633..addee6a 100644 --- a/README.md +++ b/README.md @@ -80,14 +80,13 @@ toc: ## 投稿方式 -### 方式一:交互式流程(私聊 Bot) +### 方式一:私聊转发(推荐) ``` -1. 私聊 Bot 发送 /post -2. 转发任意消息给 Bot(支持来自任意来源:个人、群组、频道等) -3. 点击分类按钮 -4. 确认标题 (使用默认 / 自定义输入) -5. 确认添加 +1. 私聊 Bot,直接转发任意消息(支持来自个人、群组、频道等) +2. 点击分类按钮 +3. 确认标题 (使用默认 / 自定义输入) +4. 确认添加 ``` Bot 会将消息内容复制发送到频道,目录链接指向频道中的新消息。 diff --git a/internal/telegram/handlers_post.go b/internal/telegram/handlers_post.go index 7ac6278..99a954e 100644 --- a/internal/telegram/handlers_post.go +++ b/internal/telegram/handlers_post.go @@ -100,17 +100,21 @@ func (b *Bot) handleTextInput(c tele.Context) error { return nil } - // 只处理有活跃投稿状态的用户 + // 检查是否为转发消息 + isForwarded := msg.OriginalChat != nil || msg.OriginalSender != nil + state := b.states.Get(c.Sender().ID) - if state == nil { - return nil + + // 私聊收到转发消息,直接启动投稿流程(无需先 /post) + if isForwarded && b.cfg.IsAdmin(c.Sender().ID) { + if state == nil || state.Step == StepAwaitForward { + b.states.StartPost(c.Sender().ID) + return b.handleForwarded(c) + } } - // 转发消息处理 (StepAwaitForward) - // OriginalChat: 转发自频道/群组; OriginalSender: 转发自个人用户 - isForwarded := msg.OriginalChat != nil || msg.OriginalSender != nil - if isForwarded && state.Step == StepAwaitForward { - return b.handleForwarded(c) + if state == nil { + return nil } // 自定义标题输入 (StepAwaitTitle)