Redis之父用纯C语言代码实现Telegram Bot框架

2023年 12月 6日 66.8k 0

话说,Redis 创始人 antirez 最近开源了一个小项目 BOTLIB。这是用纯 C 语言代码编写的 Telegram Bot 框架 。

下面是它的GitHub仓库:

GitHub 地址:https://github.com/antirez/botlib从名字就能知道它的用途,BOTLIB 用于创建 Telegram 对话机器人。

整个代码结构如下:

  • 基础数据结构

全局变量 struct chatState *Chat用来存储所有的状态信息;

struct client *clients[MAX_CLIENTS]数组,用来存储所有客户端的fd以及用户昵称。

  • 代码流程

1.initChat初始化全局变量,同时创建服务端监听fd保存到全局变量Chat->serversock中

2.开始while死循环3.先初始化fd_set集合4.将监听fd和客户端fd放入到fd_set集合中5.调用系统函数select对fd_set集合进行事件监测,同时将监测到结果保存到fd_set中6.最后在分别对监听fd和客户端fd在结果fd_set中是否有事件进行判断

7.分别进行对应的业务处理

代码结构很清晰,很适合初学C语言的同学拿来练手网络编程。

后续代码还会增加对称加密/更高级的网络模型等等,可以持续关注学习。整个的网络IO的处理和Redis源码关于网络IO的处理有很多的相似之处。

从 antirez 创建的另一个仓库 (https://github.com/antirez/failed-3d-prints-bot) 可知,他用了一台带网络摄像头的树莓派来监控 3D 打印机,并在检测到打印失败时通过 Telegram 接收该状态消息。为了通过 Telegram 接收信息,他编写了一个 Telegram Bot 框架来创建 Telegram 机器人,他所创建的这个机器人用途是检测打印机的失败状态,并传回一张该状态对应的 3D 打印机实时图像。此前,Redis 创始人还用 C 语言编写最小聊天服务器:Smallchat。Smallchat 的核心代码仅 300 多行。antirez 称删除空行和注释后其实只有 200 多行。

本文为 @ 场长 创作并授权21CTO发布,未经许可,请勿转载。

内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。

该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论