给Typecho添加 有评论通知到QQ 的功能
AI摘要:该文章介绍了如何给Typecho添加评论通知到QQ的功能。作者使用了基于GO-CQhttp项目的方法来实现。在使用过程中,需要修改主题的`functions.php`文件,并在其中添加相应的代码。代码中包括了获取配置中的QQ机器人API地址和QQ号码,并构建消息内容。最后通过Curl请求将消息发送给QQ机器人。完成设置后,可以在主题设置处设置QQ机器人的API和QQ号码。
简介
前文有
利用QQ机器人在有WordPress评论时QQ消息通知## 项目
![icon](https://imsun.oss-cn-shanghai.aliyuncs.com/2024/03/1710062614-cc35d4b8e796c86928...
个人看IM的时间比邮件的时间长,所以就还是使用QQ接收通知
基于 GO-CQhttp 项目
也可以使用插件实现
Typecho插件CommentsByQQ修改版## 简介
基于Typecho插件CommentsByQQ修改
一直想让qq来通知评论消息。毕竟邮箱之类的还是不太方便。
原作者的插件QQ机器人已经挂了。
所以我自己搭建了一个基...
使用
修改主题 functions.php
在 function themeConfig($form) {
下添加
$qqboturl = new Typecho_Widget_Helper_Form_Element_Text('qqboturl', NULL, 'https://bot.asbid.cn', _t('QQ机器人API,保持默认则需添加 2280858259 为好友'), _t('基于cqhttp,有评论时QQ通知'));
$form->addInput($qqboturl);
$qqnum = new Typecho_Widget_Helper_Form_Element_Text('qqnum', NULL, '80116747', _t('QQ号码'), _t('用于接收QQ通知的号码'));
$form->addInput($qqnum);
最后添加以下代码
function notifyQQBot($comment) {
$options = Helper::options();
// 检查评论是否已经审核通过
if ($comment->status != "approved") {
error_log('Comment is not approved.');
return;
}
// 获取配置中的QQ机器人API地址
$cq_url = $options->qqboturl;
// 检查API地址是否为空
if (empty($cq_url)) {
error_log('QQ Bot URL is empty. Using default URL.');
$cq_url = 'https://bot.asbid.cn';
}
// 获取QQ号码
$qqnum = $options->qqnum;
// 检查QQ号码是否为空
if (empty($qqnum)) {
error_log('QQ number is empty.');
return;
}
// 如果是管理员自己发的评论则不发送通知
if ($comment->authorId === $comment->ownerId) {
error_log('This comment is by the post owner.');
return;
}
// 构建消息内容
$msg = '「' . $comment->author . '」在文章《' . $comment->title . '》中发表了评论!';
$msg .= "\n评论内容:\n{$comment->text}\n永久链接地址:{$comment->permalink}";
// 准备发送消息的数据
$_message_data_ = [
'user_id' => (int) trim($qqnum),
'message' => str_replace(["\r\n", "\r", "\n"], "\r\n", htmlspecialchars_decode(strip_tags($msg)))
];
// 输出调试信息
error_log('Sending message to QQ Bot: ' . print_r($_message_data_, true));
// 初始化Curl请求
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "{$cq_url}/send_msg?" . http_build_query($_message_data_, '', '&'),
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 0
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
error_log('Curl error: ' . curl_error($ch));
} else {
error_log('Response: ' . $response);
}
curl_close($ch);
}
Typecho_Plugin::factory('Widget_Feedback')->finishComment = 'notifyQQBot';
完成之后在主题设置处设置QQ机器人的API 和 QQ号码
关闭
这个我以前也弄过,还弄过什么tg通知,微信通知,但是似乎好像没什么大用,哈哈哈
还是有用的, 我一直都挂着呢
这个可以,比邮件方便一点。
对吧,我也觉得更方便些