Telegram机器人不仅是聊天助手,更是强大的自动化工具。当机器人遇上Notion数据库,你可以将任意消息、反馈、任务自动沉淀为结构化数据,为个人知识库或团队协作打造实时同步的中枢。本教程将带你从零开始,完成Telegram机器人到Notion数据库的接入。
准备工作:你需要什么?
- 一个Telegram账号(用于创建机器人)
- 一个Notion账号(免费版即可)
- Python 3.7+环境(或你熟悉的编程语言)
- 基本的HTTP API知识
第一步:创建Telegram机器人并获取Token
- 在Telegram中搜索 @BotFather,输入
/newbot按提示创建机器人。 - 复制BotFather返回的HTTP API Token,例如
123456789:ABCdefGhIJKlmNoPQRstuVWXyz。此Token用于控制机器人,请保密。
第二步:创建Notion数据库并获取API密钥
- 在Notion中新建一个页面,创建空数据库(Table类型)。至少添加两列:内容(标题格式)和时间(日期格式)。
- 访问 Notion Integrations 页面,点击“New integration”,填写名称(如“TelegramBot”),选择关联的工作区,创建后复制Internal Integration Token(以
secret_开头)。 - 回到数据库页面,点击右上角 … 菜单 → Connections → 添加你刚创建的集成。这是授权机器人访问数据库的关键步骤。
第三步:编写机器人代码接入Notion API
我们使用Python编写一个简单的轮询机器人。首先安装依赖:pip install requests。然后创建 bot.py 文件,内容如下:
import requests
import datetime
TELEGRAM_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
NOTION_TOKEN = "YOUR_NOTION_TOKEN"
DATABASE_ID = "YOUR_DATABASE_ID" # 数据库URL中32位ID
def send_message(chat_id, text):
url = f"https://api.telegram.org/bot/sendMessage"
data = {"chat_id": chat_id, "text": text}
requests.post(url, data=data)
def add_notion_record(content):
headers = {
"Authorization": f"Bearer ",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
payload = {
"parent": {"database_id": DATABASE_ID},
"properties": {
"内容": {"title": [{"text": {"content": content}}]},
"时间": {"date": {"start": datetime.datetime.now().isoformat()}}
}
}
response = requests.post("https://api.notion.com/v1/pages", headers=headers, json=payload)
return response.ok
def handle_update(update):
if "message" in update:
message = update["message"]
chat_id = message["chat"]["id"]
text = message.get("text", "")
if text.startswith("/save"):
data = text[5:].strip()
if data:
if add_notion_record(data):
send_message(chat_id, "✅ 已保存到Notion!")
else:
send_message(chat_id, "❌ 保存失败。")
else:
send_message(chat_id, "用法:/save 内容")
def main():
offset = 0
while True:
url = f"https://api.telegram.org/bot/getUpdates?offset=&timeout=30"
response = requests.get(url).json()
for update in response.get("result", []):
handle_update(update)
offset = update["update_id"] + 1
if __name__ == "__main__":
main()替换代码中的三个变量(Token、数据库ID)即可。启动后,向机器人发送 /save 待记录的内容,该内容就会写入Notion数据库。
第四步:部署与运行
本地运行 python bot.py 进行测试。若需长期运行,推荐使用systemd(Linux)或Docker容器。以下是一个systemd服务示例:
[Unit]
Description=Telegram Notion Bot
After=network.target
[Service]
ExecStart=/usr/bin/python3 /path/to/bot.py
Restart=always
[Install]
WantedBy=multi-user.target将文件放入 /etc/systemd/system/,运行 systemctl enable --now telegram-notion-bot 即可。
常见问题与技巧
1. 如何自定义数据格式?
修改 add_notion_record 中的properties,添加更多字段(如标签、状态),在Telegram消息中用固定格式解析,例如 /save 标题|标签1|标签2。
2. 错误处理与日志
建议使用try/except包裹请求,将错误输出到日志文件,避免机器人连续失败。
3. 安全性
Token绝不能提交到公开代码仓库。使用环境变量存储敏感信息,并限定Notion集成只能访问需要的页面。
总结
通过以上步骤,你已经实现了Telegram机器人 → Notion数据库的数据自动记录。这个基础框架可以延伸出许多场景:例如收集客户反馈、记录每日待办、保存灵感碎片。结合Telegram的命令菜单和Notion的数据库视图,你的信息管理效率将大幅提升。现在就去尝试,让数据流动起来吧!