如何用Session与JSON文件连接Telegram(Pyrogram)?解决SQLite报错
问题解决:sqlite3.OperationalError: no such column: number
核心错误原因
这个错误是因为你的.session会话文件是用旧版本Pyrogram生成的,新版本Pyrogram的会话数据库结构发生了变化,导致读取时找不到对应的number字段。
修复步骤
- 删除当前的
.session文件,让Pyrogram重新生成适配当前版本的新会话数据库。 - 重新运行脚本,按照提示完成手机号验证,完成账号授权流程。
代码中的其他问题修正
你的代码存在未定义变量、参数错误等问题,修正后的完整代码如下:
import asyncio from pyrogram import Client import json # 加载会话配置 with open('session.json', 'r') as sessiondatafile: session_data = json.load(sessiondatafile) # 自定义目标聊天ID、消息内容和视频笔记路径 TARGET_CHAT_ID = "目标聊天ID或用户名(如@test_chat或123456789)" MESSAGE_TEXT = "要发送的文本消息内容" VIDEO_NOTE_FILE = "视频笔记文件路径(如./circle_video.mp4)" async def main(): async with Client( name=session_data['session_file'], api_id=session_data["app_id"], api_hash=session_data["app_hash"], app_version=session_data["app_version"], device_model=session_data["device"], system_version=session_data["system_version"], # 修正原代码中错误赋值为app_version的问题 lang_code=session_data['lang_code'], phone_number=session_data['phone'] ) as app: # 发送视频笔记(若不需要可删除此段) if VIDEO_NOTE_FILE: await app.send_video_note(chat_id=TARGET_CHAT_ID, video_note=VIDEO_NOTE_FILE) # 发送文本消息 await app.send_message(chat_id=TARGET_CHAT_ID, text=MESSAGE_TEXT) if __name__ == "__main__": asyncio.run(main())
额外注意事项
- 确保
session.json中的system_version字段值正确,原代码错误将其设置为app_version。 - 视频笔记文件需符合Telegram要求:圆形比例、时长不超过60秒,格式支持MP4等。
内容的提问来源于stack exchange,提问作者EL_Pablo
相关产品推荐
相关产品推荐

