Logseq上最强大的聊天机器人,可以快速输入,网页剪藏,生成日历,制作anki

首先感谢Discord群里的Tony365老师,这篇分享其实就是翻译并图文解释他的工作Lupin Telegram Bot. 他的代码还会不断更新进化,所以以后会不定时对这个分享进行补充.


2021.3.4更新

支持将现有笔记全部加密和解密

  1. 首先需要你的logseq 有开启加密的功能,并输入密码(千万不要忘记)
    image

  2. 然后在"所有库"里面会有一把锁的图标 image 在"Reindex"旁边,点击这个图标
    弹出来的对话框会给出你的"Public Key";
    点击下方的click to view the private key,打开后出现另一个私有密钥

  3. 这两个Key要依次输入到config.ini
    image
    依次替换里面的两处红框

  4. 保存并重新运行程序之后,在Telegram界面输入指令/encryptAll, 等待一段时间,Lupin会把你笔记里的所有页面全部加密

  5. 反过来,输入/decryptAll,会把已经加密的所有页面全部恢复成明文.


2021.2.28 更新

支持主题切换
Telegram聊天机器人中输入/themes,会出现主题切换的选项,你可以选择你喜欢的主题进行切换.


2021.2.19更新

支持自动生成日历
其实你都不需要做什么,只要更新Lupin的仓库,然后将config.sample.ini里面多出来的内容复制到你的现有的config.ini上面
里面默认的设置是这样的


第一个红色框框设为true代表自动生成日历
第二个代表是否让Lupin自动更新
第三个设置每周的第一天
第四个设置把日历放在哪个页面(默认放在目录里)


注意这个方法高度依赖Telegram和github,面向人群是喜欢折腾并会一些魔法的同学.
过程看似复杂,但是对于有一些编程经验的人来说其实并不难.

1 这是什么

它其实就是一个Telegram聊天机器人,你在Telegram里输入你的灵感,粘贴的文本,链接等等,它就会将其翻译成logseq格式的文本并推送到你的github笔记仓库中.
所以有三个限制: 1) 你要有telegram 2) 你要有一个Python环境的电脑(云服务器或者PAAS服务甚至个人电脑都可以) 3) 你的笔记要跟github同步

2 它的优点和功能

  • 代码开源,自己的电脑或者自建服务器运行,数据不会泄露
  • 设置里面能够限制Telegram帐号访问,安全有保证
  • 避免了手机端登录github版logseq经常冲突的问题,如果只是快速输入的话还是很方便的
  • 发送任何文本语句(包括#标签)就在前面加上时间戳
    • 对于多字符的标签请用#[[a b c]]
  • 发送TODO + 文本,会转换成todo list
  • 发送链接, 会转换成"时间戳+#bookmark+链接标题"的形式
    • 这个#bookmark可以在设置里改成任何标签
  • 发送Youtube视频链接
  • 发送图片到github 笔记repo/assest文件夹
  • 利用Hypothes.is剪藏(包括高亮,标注)网页和PDF到logseq
  • 制作flashcard小卡片,可以用手机自定义回顾每日anki
  • 用手机回顾任何页面的思维导图
  • 自动生成日历帮助你快速定位每日笔记
  • 支持主题切换
  • 支持自定义将文字发送到任何文件夹或文件中(默认的是每日笔记中)
  • 支持全部加密/解密你的文本(使用https://github.com/FiloSottile/age的技术)

3 它的缺点

除了需要魔法和一定的logseq,git,以及python知识之外

  • 暂时无法发送图片,未来肯定会加入这个功能 已支持
  • github版暂时不支持与本地互联,需要手动git同步并解决潜在的冲突问题; 但是未来如果打通了就可以将本地PDF标注高亮附加到笔记中
  • Hypothes.is的标签暂时不支持多单词

4 前置准备

4.1 Telegram bot

bot就是机器人的意思,使用的是Telegram的API来做你想做的事,功能极为强大.

  • 打开你的Telegram,搜索"BotFather", 输入"/newbot", 提示让你起个名字,比如叫"testlogseq"
    • (这个就是你频道的标题)
  • 然后让你给这个bot选一个用户名username,建议用’bot’结尾,比如叫"handuo_bot"
  • 这时候如果没有重名的问题就会提示"Done! Congrats"
  • 提示里面有两个重要信息:
    • 你的新机器人频道 t.me/handuo_bot, 点击就会进入这个聊天机器人的聊天界面
    • 一个token, 相当于你这个机器人的密码,不要给别人看,要记住一会儿用.
    • 万一你忘了这个token,要在"BotFather"频道里输入"/mybots",选择你的机器人"handuo_bot",然后点击第一个"API Token"

4.2 Github仓库的通行证

  • 进入这个网址 https://github.com/settings/tokens
  • 选择右上角的Personal access tokens,相当于创建一个密钥,用于让外面访问你github仓库的通行证
  • 起个名字比如bot_token,选择Scopes,如下图所示
    image
    然后"Generate token",记住这个GithubToken,一会儿用.

4.3 Hypothes.is

这个是用来做剪藏的

5 搭建步骤

5.1 环境搭建

因为这个程序要一直运行才可以让你随时用手机或电脑上的telegram给笔记输入内容,所以建议用云服务器跑这个机器人,当然本地电脑也是可以的.

  • 首先注意你的电脑或服务器的时区设置正确
    • 很多人的VPS上没有手动修改time zone,默认是UTC时区
  • 安装python3.x环境(比如Python3.7),不会的自己搜.
    • Win下如果找不到python命令说明环境变量没有设置好.
    • 如果找不到’pip’或者’pip3’命令就额外安装
  • 然后安装telegram-bot的库: 命令行中输入 pip install python-telegram-bot 或者 pip3 install python-telegram-bot
  • 安装github的py库: pip install pyGitHubpip3 install pyGitHub
  • 安装requests库: pip install requestspip3 install requests
  • 注意: 如果出现permission的错误,就在这些命令后面加上 --user的参数

5.2 下载代码

git clone https://github.com/akhater/Lupin
或者到这个代码仓库点击"Code"选择"Download ZIP"然后解压

  • 建议前者,因为现在开发者在不断更新代码,可以通过git pull origin master来更新代码

5.3 修改设置

5.4 试运行

  • 在命令行里运行: python main.py or python3 main.py
  • 看有没有报错,如果没有报错,进行下一步

5.5 得到ChatID

  • 在Telegram你的机器人"testlogseq"里输入/start,会提示"Your ID is not Authorized, add xxxxxx to BotAuthorizedIDs inside config.ini & restart me"
  • 记住这个xxxx的数字,将其填入"config.ini"的第二行
    222
  • 保存后重新运行,然后再输入/start.

5.6 测试一下

输入一些测试文字,看看你的笔记那边是否已经同步了

5.7 后台运行

关于如何让你的python程序开机后台运行,网上应该有很多教程,这里就不赘述了.

6 如何使用Hypothes.is 进行剪藏

6.1 网页剪藏

  • 首先点击插件里的hypothes.is图标image 变成image .

  • 选择一段文字

    • 左边的annotate就是标注
    • 右边的highlight就是高亮
  • 编辑标注


    编辑完标注,可以选择添加标签,然后别忘了点击post to public/private这个按钮,保存你的标注

  • 页面笔记
    image
    红色圈圈还可以添加页面笔记

6.2 发送到telegram

  • 输入/anno 空格 后面加你看的这个网页的地址,比如我看的这个网页"https://web.hypothes.is/"
    • 输入/anno https://web.hypothes.is/

7 如何制作Anki 卡片

  • 在你的logseq笔记中, 当你想做一个flashcard卡片的时候,输入如下格式的内容
    image
  • 在Telegram你的机器人"testlogseq"里输入/srs import,它会扫描更新你的所有卡片(要等一会儿)
  • 以后如果添加了新的卡片,就还要再输入这个指令一遍
  • 然后你想回顾卡片了,就可以输入/srs x 就会随机给你x张进行回顾

8 如何制作mindmap思维导图

  • 输入/getMM 页面名 ,等一会儿,会返回给你一个HTML格式的单页脑图

命令总结

指令 描述
/start Just a greeting
/uptime returns Lupin Uptime
/ver returns Lupin running Version
/help help command (WIP)
/anno URL Import hypothesis annotations from URL
/importFC Imports your Flashcards into Lupin
/srs import alias of /importFC
/srs x starts a round of SRS for x flashcards
/getMM pageTitle Generates a dynamic MindMap for pageTitle
/pullNow Pulls all pages from your Git for fast access
/themes calls the theme changer
/encryptAll Encrypts all your pages with AGE keys
/decryptAll Decrypts all your pages back to clear text

按照教程添加完之后 bot 输入/start 啥反应都没有该怎么办233

1赞

不知道啊?我添加过好几个机器人了没出现过这个问题~是不是我教程哪里遗漏了?我再检查检查~
你确定已经正确修改设置并运行了?你在输入start后运行python的终端有没有什么输出报错?

1赞

可能是我的环境有问题,我运行 python main.py 报错,我后来又查了下,好像是安装的某个依赖的版本太高了还是咋的233,我看看能不能解决

个人在配置Lupin中,遇到几个小注意点

  • Bot token的格式是:数字 : 随机字符串
  • 运行 python main.py,需要进入Lupin的文件夹
  • 电脑的网络环境必须fq
  • fq后,步骤5.4成功,进行5.5才有可能成功,否则无法获得BotAuthorizedID
  • 即使5.4不成功,Lupin也会在logseq的contents.md中生成日历
1赞

命令行需要配置梯子代理,不然连不上 telegram 的 api
export https_proxy=http://ip:port

已成功,找到了一个免费的学术tz

1赞

试着装了一下,现在在Telegram发消息给bot,可以看到github的文件夹里文件有了输入的内容,但是网页端打开logseq的日志里啥也没有。这是咋回事呢?

你试一下reindex?应该是logseq这边没有及时更新吧?

感觉可能是加密的问题?我发现提交上去的东西在加密那一堆字符的外面。但是logseq设置成不加密也回不去了,不知道怎么办。

Lupin的master分支不支持加密,它有个AGE-ENCRYPT的分支,你可以试一下那个,需要在设置里面把public, private key输入

现在得到和你一样的错误提示了……
https://github.com/akhater/Lupin/issues/9#issuecomment-788511500

这东西毕竟刚出来,还是有风险的,我现在都是用的备份来加密,等最终成熟了再用主力笔记 :sweat_smile:

我刚刚测试了一下,错误消除了

同时我用/encryptAll/decryptAll可以分别把之前所有的笔记全部加密和解密,暂时没有发现问题. :dog:, 感觉还挺牛逼的

我一开始有报错的情况下手抖/encryptAll了两回……笔记全都变成了密码。回退之后乖乖用不加密加Lupin-master了,已成功。同时用两个测试功能风险太大了。。。

这是config.ini配置错了还是代理的问题啊?自己弄了tz :sob:


终于弄好了 :grinning:是代理的问题,谢谢handuo!

最后如何解决的呢,我也遇到了同样的问题

不对,我的问题好像有一点不一样233 ,之前配置过,但是没成功,然后就搁置了一段时间,现在闲下来了就想着再试试,但是还是报错呜呜呜

你这个错误说明没有安装telegram的api啊,需要安装如下的程序
image
比如pip install telegram