想弄这个功能想了好几个月,之前到处在找支持rss的qqbot,qq这个东西真的垃圾。。。要给Telegram写bot要简单的多,而且更稳定
配置webhook
新建一个webhook
勾选想要接收的事件
服务端接json&推送消息
python3代码,用py3运行,不然你会看到亲切的unicode error
webhook.py
from flask import Flask,request,Response
import json
import os
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'hello world'
@app.route('/json',methods = ['POST'])
def my_json():
print (request.headers)
print (request.json)
print ('\n \n')
headers = request.headers
# 用headers中的`X-Discourse-Event`来判断事件类别
event = (headers['X-Discourse-Event'])
content = request.json
res={'msg':handle(event,content)}
return Response(json.dumps(res),mimetype='application/json')
def new_topic(topic):
content = topic
topicName = str(content['topic']['title'])
topicSlug = str(content['topic']['slug'])
topicId = str(content['topic']['id'])
userName = str(content['topic']['details']['created_by']['username'])
url = 'https://parrotsec-cn.org/t/' + topicSlug + '/' + topicId
print ('%s 发表了新主题: "%s" \n %s'%(userName,topicName,url))
#qq bot 推送
os.system(r'qq send group :like:parrot "%s 发表了新主题: \"%s\" \n %s"'%(userName,topicName,url))
return ('%s 发表了新主题: "%s" \n %s'%(userName,topicName,url))
def new_post(post):
content = post
name = str(content['post']['name'])
title = str(content['post']['topic_title'])
topicSlug = str(content['post']['topic_slug'])
topicId = str(content['post']['topic_id'])
postNumber = str(content['post']['post_number'])
url = 'https://parrotsec-cn.org/t/' + topicSlug + '/' + topicId + '/' + postNumber
if 'reply_to_user' in content['post']:
postTo = str(content['post']['reply_to_user']['username'])
print ('%s 在主题 "%s" 中回复了 %s \n %s'%(name,title,postTo,url))
os.system(r'qq send group :like:parrot "%s 在主题 \"%s\" 中回复了 %s \n %s"'%(name,title,postTo,url))
return '%s 在主题 "%s" 中回复了 %s \n %s'%(name,title,postTo,url)
else:
print ('%s 在主题 "%s" 中发表了回复 \n %s'% (name,title,url))
os.system(r'qq send group :like:parrot "%s 在主题 \"%s\" 中发表了回复 \n %s"'% (name,title,url))
return ('%s 在主题 "%s" 中发表了回复 \n %s'% (name,title,url))
# 处理json
def handle(event,myjson):
if event == 'topic_created':
# user_id=-1的是system用户
if myjson['topic']['user_id']==-1:
pass
else:
return new_topic(myjson)
elif event == 'post_created':
#每新建一个主题的同时也会发一个新回复的json,区别在于新主题的new_post json中post_number=1,新回复要比1大
if myjson['post']['post_number'] > 1:
return new_post(myjson)
else:
pass
if __name__ == '__main__':
app.run(host = '0.0.0.0',port = 8000,debug = True)
- 注意三个
os.system
函数中的内容:like:parrot
是因为有空格的名字好像识别不了。。
代码东拼西凑凑出来的。。写的很烂,欢迎大佬指点那些ugly的地方。。
qq-bot
安装:
pip install qqbot
运行获取配置文件:
qqbot
编辑配置文件:
vim ~/.qqbot-tmp/v2.x.conf
按官方文档要求配置,能登陆就好
运行:
qqbot
python3 webhook.py
效果
新主题
新回复
有问题欢迎留言讨论