54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from aiogram.enums import ParseMode
|
|
from aiogram.filters import CommandStart
|
|
from aiogram.types import Message
|
|
from trilium_py.client import ETAPI
|
|
|
|
load_dotenv()
|
|
|
|
TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
|
|
TRILIUM_URL = os.getenv("TRILIUM_URL")
|
|
TRILIUM_TOKEN = os.getenv("TRILIUM_TOKEN")
|
|
INBOX_NOTE_ID = os.getenv("INBOX_NOTE_ID")
|
|
|
|
# создаем Trilium API клиент
|
|
ea = ETAPI(server_url=TRILIUM_URL, token=TRILIUM_TOKEN)
|
|
|
|
bot = Bot(token=TELEGRAM_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
|
|
|
|
dp = Dispatcher()
|
|
|
|
|
|
@dp.message(CommandStart())
|
|
async def start(msg: Message):
|
|
await msg.answer("Отправь мне текст — я создам заметку в Trilium.")
|
|
|
|
|
|
@dp.message()
|
|
async def handler(msg: Message):
|
|
text = msg.text.strip()
|
|
|
|
# разделяем на заголовок и тело
|
|
lines = text.split("\n", 1)
|
|
title = lines[0][:100] # заголовок = первая строка
|
|
content = lines[1] if len(lines) > 1 else "" # остальное — тело заметки
|
|
|
|
ea.create_note(
|
|
parentNoteId=INBOX_NOTE_ID, title=title, content=content, type="text"
|
|
)
|
|
|
|
await msg.answer("Заметка сохранена в Trilium.")
|
|
|
|
|
|
async def main():
|
|
await dp.start_polling(bot)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import asyncio
|
|
|
|
asyncio.run(main())
|