土豆不好吃

使用Telegram Bot接受和回复WordPress评论

文章目录[显示]

 

当你的博客收到了一条评论的时候,想要回复,应该怎么做呢?打开浏览器,打开后台,等待加载,回复……哦对了,我还有一个步骤,就是不在家的话还得开一个全局代理

这怎么行,我都要懒死了。生气??


没错的,历经1958天,我的博客被DNS污染啦。

假如能够用telegram bot完成这种回复操作就好了!那么是当然的了。

 

 

原理

Basic Auth

插件会为WordPress开启Basic Auth,因此要用复杂的密码,非常复杂的那种,并且https哦!

WordPress Hook

WordPress博客在新添加一条评论的时候,会触发N多钩子,其中有一个钩子叫comment_post,这个钩子被触发后,就会给调用并给相应的回调函数三个参数$comment_ID, $comment_approved, $comment_obj$comment_obj就是评论者留下的信息了,大概是如下结构的数组

 

根据post_id comment_id等,使用WordPress自带的函数就能生成完整的评论信息。

之后调用Telegram bot的REST API,就可以发送消息给用户了。

Telegram

当回复机器人消息时,会直接向WordPress的REST API发起评论添加请求。当然啦,你注意到了机器人消息里的id:123,456了吗?这个就是小小的标识符哦。

这个是用golang实现的机器人,轮询模式。其实我知道这个是可以用Telegram webhook完成的,直接写在插件里用PHP实现。更进一步,可以做到不开启Basic Auth,直接用WordPress的接口甚至是直接插入数据库。不过为了练习嘛……

使用方式

基本可以如下归纳

  1. 安装插件
  2. 创建bot、获取自己的user id
  3. 插件中添加相应的设置
  4. 编辑配置,并运行bot后端
  5. 可以了。

注意事项

服务器在国内

WordPress的服务器上,想办法开个代理(目前只支持http代理),然后插件设置里加入配置信息;

Telegram的服务器上,也想办法开个代理,然后设置这样两条环境变量

export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

或者干脆上proxychains试试。

proxychains貌似只能代理dynamically linked 的程序,golang的二进制是statically linked的哎

Basic Auth

Basic Auth就是在HTTP请求头里加上base64编码之后的认证信息。优点是简单方便,易于实现,缺点很多。

但是有一点是肯定的,在www这个层面上,不走TLS的登录,都是耍流氓。

全程TLS,啥都看不到。

未TLS,底裤?都看光了

机器人配置与命令行参数

{
"username": "admin",
"password": "admin",
"url": "http://localhost/",
"token": "907J6Tw",
"uid": "23231321",
"admin": 1,
"tail": "本评论由Telegram Bot回复~❤️"
}

-c指定配置文件路径,默认使用当前目录下的config.json

-f强制运行,哪怕是http的……

-c file set configuration file (default "config.json")
-f force to run even on http sites.
-h this help
-v show version and exit

适配其他博客程序

其实没啥好适配的……因为基本上要重写的。

只要能够找到相应的hook,在评论之后触发一个事件,那么就可以了。???

开源地址

开源地址

为了更好的偷懒,付出成倍的精力?

————zuiyu

然后就这么水了一波?????

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/wp-tgbot.html
退出移动版