telegram-history-dump开发者指南:自定义格式化器实现教程
telegram-history-dump开发者指南自定义格式化器实现教程【免费下载链接】telegram-history-dumpBackup Telegram chat logs using telegram-cli项目地址: https://gitcode.com/gh_mirrors/te/telegram-history-dumptelegram-history-dump是一款基于telegram-cli的聊天记录备份工具它允许用户将Telegram聊天记录导出为多种格式。本教程将详细介绍如何为该工具创建自定义格式化器让你能够按照自己的需求定制聊天记录的输出样式。为什么需要自定义格式化器默认情况下telegram-history-dump提供了多种格式化器包括HTML、纯文本、PISG等。但有时你可能需要特定格式的输出比如Markdown、CSV或者其他自定义格式。这时创建自己的格式化器就显得尤为重要。格式化器基础在开始编写自定义格式化器之前让我们先了解一下格式化器的基本结构。所有格式化器都继承自FormatterBase类该类定义了格式化器的基本接口。FormatterBase类FormatterBase类位于formatters/lib/formatter_base.rb文件中它提供了以下核心方法start_backup(dialogs): 在开始备份前调用可用于初始化操作format_dialog(dialog, messages): 格式化单个对话必须实现end_backup(): 在备份完成后调用可用于清理或最终处理创建自定义格式化器的步骤步骤1创建格式化器文件首先在formatters目录下创建一个新的Ruby文件。文件名应该与你的格式化器名称相对应例如markdown.rb。步骤2继承FormatterBase在新创建的文件中需要引入FormatterBase并创建一个继承自它的类。类名应该采用驼峰式命名例如MarkdownFormatter。require_relative lib/formatter_base class MarkdownFormatter FormatterBase # 你的代码将在这里 end步骤3设置格式化器名称每个格式化器都需要一个唯一的名称这通过设置NAME常量来实现NAME markdown步骤4实现必要的方法至少需要实现format_dialog方法该方法负责处理单个对话的格式化。你也可以选择性地实现start_backup和end_backup方法。start_backup方法start_backup方法在开始处理所有对话前被调用可以用来进行一些初始化工作比如创建输出目录def start_backup(dialogs) FileUtils.mkdir_p(output_dir) endformat_dialog方法format_dialog方法是格式化器的核心它接收对话信息和消息列表作为参数def format_dialog(dialog, messages) # 处理对话和消息的代码 endend_backup方法end_backup方法在所有对话处理完成后被调用可以用来进行最终的清理或汇总工作def end_backup $log.info(Markdown export finished, see: output/formatted/markdown) end访问对话和消息数据在format_dialog方法中你可以访问dialog和messages对象来获取对话和消息数据。dialog对象dialog对象包含对话的基本信息如print_name: 对话名称title: 对话标题type: 对话类型用户、群组等messages对象messages是一个包含所有消息的数组每个消息是一个哈希包含text: 消息文本date: 消息时间戳out: 是否为发送的消息from: 发送者信息media: 媒体信息如果有输出目录格式化器应该将输出文件保存到output_dir目录中这个目录可以通过output_dir方法获取def format_dialog(dialog, messages) filename File.join(output_dir, #{get_safe_name(dialog[print_name])}.md) File.open(filename, w:UTF-8) do |file| # 写入格式化内容 end end配置格式化器要使用你的自定义格式化器需要在config.yaml文件中添加相应的配置formatters: markdown: # 格式化器选项示例简单的Markdown格式化器下面是一个简单的Markdown格式化器示例它将对话导出为Markdown格式的文件require_relative lib/formatter_base require cgi class MarkdownFormatter FormatterBase NAME markdown def start_backup(dialogs) FileUtils.remove_dir(output_dir, true) FileUtils.mkdir_p(output_dir) end def format_dialog(dialog, messages) safe_name get_safe_name(dialog[print_name]) filename File.join(output_dir, #{safe_name}.md) File.open(filename, w:UTF-8) do |file| # 写入对话标题 if dialog[type] ! user file.puts # Group chat: #{CGI::escapeHTML(dialog[title])} else file.puts # Chat with #{CGI::escapeHTML(dialog[print_name])} end file.puts ---\n # 写入消息 messages.reverse_each do |msg| next unless msg[text] date Time.at(msg[date]).strftime(%Y-%m-%d %H:%M) author msg[out] ? You : get_full_name(msg[from]) file.puts **#{author}** [#{date}]: #{CGI::escapeHTML(msg[text])} file.puts end end end def end_backup $log.info(Markdown export finished, see: output/formatted/markdown) end end测试自定义格式化器要测试你的自定义格式化器只需在运行telegram-history-dump时指定它git clone https://gitcode.com/gh_mirrors/te/telegram-history-dump cd telegram-history-dump ruby telegram-history-dump.rb --format markdown总结创建自定义格式化器是扩展telegram-history-dump功能的强大方式。通过继承FormatterBase类并实现必要的方法你可以将Telegram聊天记录导出为任何你需要的格式。无论是简单的文本格式还是复杂的HTML报告自定义格式化器都能满足你的需求。希望本教程能帮助你开始创建自己的格式化器。如果你有任何问题或需要进一步的帮助请参考项目中的示例格式化器如formatters/html.rb和formatters/plaintext.rb。【免费下载链接】telegram-history-dumpBackup Telegram chat logs using telegram-cli项目地址: https://gitcode.com/gh_mirrors/te/telegram-history-dump创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Multi-Agent Custom Automation Engine Solution Accelerator与Azure Cosmos DB集成指南:数据存储最佳实践

Multi-Agent Custom Automation Engine Solution Accelerator与Azure Cosmos DB集成指南:数据存储最佳实践

Multi-Agent Custom Automation Engine Solution Accelerator与Azure Cosmos DB集成指南:数据存储最佳实践 【免费下载链接】Multi-Agent-Custom-Automation-Engine-Solution-Accelerator The Multi-Agent Custom Automation Engine Solution Accelerator is an AI-…

2026/10/19 23:34:39 阅读更多 →
10分钟上手cli-color:从安装到高级样式的快速入门教程

10分钟上手cli-color:从安装到高级样式的快速入门教程

10分钟上手cli-color:从安装到高级样式的快速入门教程 【免费下载链接】cli-color Colors and formatting for the console 项目地址: https://gitcode.com/gh_mirrors/cl/cli-color cli-color是一款功能强大的控制台颜色和格式化工具,让开发者能…

2026/10/20 6:05:58 阅读更多 →
视频切片制作全流程技术指南:从素材获取到自动化渲染

视频切片制作全流程技术指南:从素材获取到自动化渲染

这次我们来看一个名为“卫!杨颜看卫戍协议归来!杨颜:后面是伊戈尔大帝?乌萨斯!!【杨颜/切片】”的视频切片项目。从标题和常见网络内容创作模式来看,这很可能是一个基于特定游戏或动漫内容&…

2026/10/20 6:50:42 阅读更多 →

最新新闻

朱雀ai率检测和知网ai检测哪个准?论文降AI率、去AI味前先搞清楚学校用哪个AIGC检测

朱雀ai率检测和知网ai检测哪个准?论文降AI率、去AI味前先搞清楚学校用哪个AIGC检测

朱雀ai率检测和知网ai检测哪个准?这个问题我前后被问过不下几十次,每次的背景都差不多:同一篇论文,朱雀测一个数,知网测一个数,两个数对不上,人就慌了,不知道该信哪个。 我的答案很…

2026/10/21 7:41:03 阅读更多 →
LDC逻辑数据中心:高并发支付系统的单元化架构

LDC逻辑数据中心:高并发支付系统的单元化架构

每秒几十万笔交易,这话放在大部分系统里都够吓人的,可在某些头部支付平台的大促高峰期,这就是常态。很多人听见这个数字的第一反应是“那得买多少台服务器”,但真把系统扛起来的,并不是简单的堆机器,而是一…

2026/10/21 7:41:03 阅读更多 →
博易大师顶底指标公式源码解析:从KDJ背离到参数调优实战

博易大师顶底指标公式源码解析:从KDJ背离到参数调优实战

简介:一份适用于博易大师期货软件的顶底判断指标公式源码文档,属于实用类教程。文档面向期货交易者与技术指标使用者,基于MACD与RSI两大经典指标,再通过自定义VAR系列函数捕捉价格连续涨跌形态,以彩色柱状线直观标记潜…

2026/10/21 7:41:03 阅读更多 →
Qt Model/View自定义代理实战:从状态标签到操作按钮

Qt Model/View自定义代理实战:从状态标签到操作按钮

说点我自己的经验。最近做一个数据监控面板,表格部分的要求相当刁钻:同一列里既要有状态色块,又要有进度条,操作列还要放按钮,双击单元格弹出来的还得是自定义编辑器。刚开始我图省事,想靠 QTableView 原生…

2026/10/21 7:41:03 阅读更多 →
基于YOLOv5的驾驶员状态与危险行为检测实践

基于YOLOv5的驾驶员状态与危险行为检测实践

开车的人可能都有过这种时刻:高速上眼皮突然打架,等惊醒过来方向盘已经偏了半条车道。我做“基于YOLOv5的驾驶员状态与危险行为检测”这个项目的出发点,就是想补上这类预警缺口——用视觉方案实时识别驾驶员是否疲劳、分心,以及有…

2026/10/21 7:41:03 阅读更多 →
Agent核心机制详解:规划与工具调用实战

Agent核心机制详解:规划与工具调用实战

Agent 30 课程第3课,这个位置正好卡在“基础铺垫”和“实战上手”之间。第1课讲 Agent 是什么、能解决什么问题,第2课带大家把开发环境跑通、完成第一个能对话的 Agent。如果第3课继续讲概念,课堂节奏就拖了,学员会觉得无聊&#…

2026/10/21 7:40:03 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →