Telegram 关键词搜索机器人搭建指南
在 Telegram 生态中,利用机器人实现自动化信息检索是非常实用的场景。这类机器人的核心逻辑其实并不复杂:接收用户输入 -> 在本地数据库中检索匹配项 -> 将结果返回给用户。今天我们就用 Python 和 Telethon 库来实现一个基础的关键词查询机器人。
技术原理与架构
整个流程可以拆解为三个主要步骤:
- 消息监听:机器人通过 API 持续监听指定聊天中的新消息。
- 数据检索:根据用户发送的关键词,在 SQLite 轻量级数据库中进行模糊或精确匹配。
- 结果反馈:将查询到的链接、文本或截图直接回复到对话窗口。
推荐技术栈
- 语言:Python 3.x
- API 库:Telethon(成熟的 Telegram MTProto 客户端库)
- 存储:SQLite(无需额外服务,适合轻量级配置)
核心代码实现
下面是一个可运行的基础示例。为了保持代码清晰,我们省略了部分异常处理,但保留了核心逻辑。
import asyncio
from telethon import TelegramClient, events
import sqlite3
# 替换为你的 API ID 和哈希值
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
phone = 'YOUR_PHONE_NUMBER'
client = TelegramClient('session_name', api_id, api_hash)
# 初始化简单的 SQLite 数据库
def init_db():
conn = sqlite3.connect('search_db.sqlite')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS keywords
(keyword TEXT, result TEXT)''')
# 预置一些测试数据
cursor.execute("INSERT OR IGNORE INTO keywords VALUES ('学习', 'https://t.me/lets_study')")
cursor.execute("INSERT OR IGNORE INTO keywords VALUES ('聊天', '@letstgbot')")
conn.commit()
conn.close()
@client.on(events.NewMessage(pattern=r'.*'))
async def handler(event):
user_input = event.message.text.strip()
if not user_input:
return
conn = sqlite3.connect('search_db.sqlite')
cursor = conn.cursor()
# 执行模糊查询
cursor.execute("SELECT result FROM keywords WHERE keyword LIKE ?", (f'%{user_input}%',))
results = cursor.fetchall()
conn.close()
if results:
for res in results:
await event.respond(res[0])
else:
await event.respond("未找到相关结果")
init_db()
client.start(phone)
client.run_until_disconnected()
运行效果演示
当用户向机器人发送指令时,系统会实时响应:
-
用户输入:
学习 -
机器人返回:
优质群组:https://t.me/lets_study -
用户输入:
聊天 -
机器人返回:
中文群搜索机器人:@letstgbot
通过这个示例,你可以清晰地看到'关键词 - 数据库 - 回复'这一闭环是如何运作的。实际开发中,你可以根据需求扩展数据库字段,增加审核机制或更复杂的匹配算法。
注意事项
- 隐私合规:请确保存储的数据合法合规,不要涉及个人隐私泄露。
- API 限制:注意 Telegram 的速率限制,避免频繁请求导致封号。
- 安全性:生产环境建议将敏感信息(如 API Key)放入环境变量管理。
希望这篇指南能帮你快速上手 Telegram 机器人的开发。如果有具体细节问题,欢迎在评论区交流。

