去年底,我曾写过一篇博客介绍如何在群晖上部署类似于flomo的笔记应用Memos,并使用n8n实现了Telegram机器人消息推送到Memos的功能。然而,这段美好的时光并未持续太久,在使用一个多月后,我就发现无法成功推送消息了。最近一直很忙,也没有时间再去调试n8n。更为糟糕的是,我还发现Memos上传文件的API已经改变。因此,今天我决定不再费心去修复n8n,转而尝试部署Memos的Telegram机器人,这样既省时又省力。在此,我分享一下完整的部署过程,供大家参考。
一、使用 @BotFather 创建一个机器人,获取你的 bot token.
- 在 Telegram 中搜索 @BotFather (←或点击该链接)并向其发送 /start 命令。
- 发送
/newbot
命令以创建新机器人,并按照提示输入一个名称和用户名。- 收到如下提示后:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
发送一个名字,例如:MyMemos
即可创建一个名称为“MyMemos
”的机器人,这个名字随时可以修改。 - 收到如下提示后:
Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
发送一个用户名,必须以bot结尾,例如:TetrisBot
或者tetris_bot.
即可创建一个用户名称为“@TetrisBot
”或者@tetris_bot
的机器人。
- 收到如下提示后:
- 创建成功后,@BotFather 会返回一段信息给你,其中
Use this token to access the HTTP API:
下面的既是bot token。 - 点击信息中形如
t.me/xxxxBot
的链接即可关注自己新建的机器人。
二、使用 @userinfobot 获取你的 chatid
- 在 Telegram 中搜索 @userinfobot(←或点击该链接)并向其发送
/start
命令,获取到的信息中id:
后面的内容即是你自己的 chatid。
三、获取你的 Memos API URL
- 登录自己的Memos->点击左上角自己的用户名->点击
我的账号
打开如下画面,红框位置的既是Memos API URL
四、将前面三步获取到的参数添加到下面的语句中
- 分别替换
BOT_TOKEN
、CHAT_ID
、MEMO_API
后面引号中的参数 - 注意:这里比官方示例多了
--restart unless-stopped \
目的是让该容器崩溃后自动重启
docker run -d \
--name tgmemobot \
-e BOT_TOKEN="588859xyz:xyz" \
-e CHAT_ID="470183200,1234" \
-e MEMO_API="https://example.com/api/memo?openId=xyz" \
--restart unless-stopped \
fwing/tgmemobot
五、修改好部署代码之后,使用任务计划进行部署
- 打开
控制面板
->任务计划
新增
->计划的任务
->用户自定义的脚本
- 常规选项卡:
- 设定任务名称:随意设置只能是英文,默认也行
- 用户账号:选择
root
- 已启用:取消勾选(不取消也行,后面可以设置一个已过期的日期)
- 计划选项卡:
- 选择
在以下日期运行
- 随意设定一个可用日期,最好是已经过去的日期
- 选择
- 任务设置选项卡:
- 将修改好的语句粘贴到
用户自定义脚本输入框
- 按确定
- 将修改好的语句粘贴到
- 任务计划列表中,右键要执行的项目->
运行
,等待~~~ - 要具体查看执行结果:单击该项目->
动作
->查看结果
,一般来讲正常(0)
表示运行完成。
一点小问题
- 如果你的群晖无法访问外网会导致容器自动停止,所以最好先确认自己的网络环境没有问题
- 转发Telegram中的多媒体信息时,那种上面是图片下面是文字的格式可能会只有图片被发送到Memos