Awesome
Who am I ?
Hey I am Lupin, an Open Source Telegram Python Chat Bot build to supercharge your LogSeq with great features like Interstitial Journaling | Flashcards | Brainmaps | PDF / Web Annotations | {TODO; DOING; LATER} | Bookmarks | Images upload and more
Getting Started
There are two methods to deploy Lupin. You can install it manaully or your can use Docker. Either method will require that you place information in a config.ini
file.
Manually via Python and PIP:
Assuming you are already using LogSeq & are familar with Python.
Lupin requires Python version >= 3.x
- Clone me
git clone https://github.com/akhater/Lupin
- Create a telegram bot
- Install Python Telegram Bot library using
pip install python-telegram-bot
orpip3 install python-telegram-bot
- Install PyGithub library using
pip install pyGitHub
orpip3 install pyGitHub
- Install the
requests
library usingpip install requests
orpip3 install requests
- Generate a Github token from
https://github.com/settings/tokens
- Rename
config.sample.ini
toconfig.ini
- Change values in
config.ini
to fit your environment - Run the bot using
python main.py
orpython3 main.py
Docker
The container is based off the official python 3 images.
The only requirement is that you have Docker installed.
Before pulling the container please follow these steps:
- Create a telegram bot: https://core.telegram.org/bots#creating-a-new-bot
- Generate a Github personal token from https://github.com/settings/tokens
- Download config.sample.ini and save it as
config.ini
- Change values in
config.ini
to fit your environment
Note: That if you do not change the time zone (TZ) your timestamp will reflect Eastern US Time (America/New_York). You can see a list of time zones here that way you can have the timestamp reflect a time zone of your choosing.
You can run an instance of Lupin where your config.ini
is located by typing this in your terminal:
docker run -d \
--name lupin \
--mount type=bind,source=$(pwd)/config.ini,target=/app/config.ini \
-e TZ=America/New_York \
--restart unless-stopped \
digitalknk/lupin
You could also create a docker-compose.yaml
file and copy/paste the text from below or download it from the repo, save it where your config.ini
is located. You can then deploy Lupin by typing this in your terminal docker-compose up -d
in the same directory.
version: "3.2"
services:
lupin:
container_name: lupin
image: digitalknk/lupin
volumes:
- type: bind
source: ./config.ini
target: /app/config.ini
environment:
TZ: America/New_York
restart: unless-stopped
When a new update to the container is released, you can update your pulled image by running one of these depending your deployment strategy where your config.ini
is located:
If you used the docker run
command:
docker stop lupin
docker rm lupin
docker run -d \
--name lupin \
--mount type=bind,source=$(pwd)/config.ini,target=/app/config.ini \
-e TZ=America/New_York \
--restart unless-stopped \
digitalknk/lupin
If a docker-compose.yaml
is used:
docker-compose stop
docker-compose rm -f
docker-compose pull
docker-compose up -d
Features
- Privacy always - self hosted & open source
- Security
- Entries are only accepted from telegram BotAuthorizedIDs so not anyone can add entries to your journal
- Fully customization with config.ini file
- Rename it
- Translate it (no hard coded messages)
- much more
- Send a thought (any text) and Lupin will make your Interstitial Journaling a breeze
- Timestamp it: supporting both 12 and 24 hrs format
- You can also turn off the timestamp all together if that's what you want
- Enter it in your Github hosted Jounral
- Send your TODO list (by including TODO in the text) and Lupin will convert it to a LogSeq TODO
- TODO command is customizable
- Send a link and Lupin automatically create a #bookmark entry in your Journal in the form of
- 18:48 #bookmark title
- #bookmark tag is customizable
- Send a YouTube video link and Lupin will automatically embedded in your Journal in the form of
- 18:52 {{Youtube link}}
- Send
/anno uri
to import all your annotations from for the uri from Hypothesis - Support for both LogSeq regular Journal and custom Journal folder and/or file
- Spaced Repetion: Spaced Repetition capabilities based on SuperMemo2 Algorithm
- Calendar Generation: Auto generates PiotrSss calendar and puts them in the sidebar
- Theme Switcher: Switch between multiple themes by calling /themes
- Generate Mindmaps of your pages by called /getMM PageTitle
- Support for AGE encryption and encrypted Graphs
Spaced Repetition
Supported format for flaschards is
## #flashcardtag
### Question 1
#### answer line 1
#### answer line 2
### Question 2
#### Answer 2
Flashcard tag is customizable Algorithm used is SuperMemo2 Triggers are /tsr import --> scan - import - update your flashcards /tsr x -> retrieve x flashcards from you pending pool /tsr -> retrieve the default number of cards set in your config .ini file Below entry in config.ini specifies you default number of flashcards
[TimeSpacedRepetion]
flashcardDailyGoal=10
Theme Switcher
Before being able to use this feature you need to name your various themes in the format ThemeName.custom.css
and place them in the /logseq folder
Commands summary
Command | Description |
---|---|
/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 |
Screenshots
Imported Hypothesis notes into LogSeq