之前闲置了好久我的Salckbot,最近捣鼓了一些进阶功能,感觉蛮有意思的。独乐乐不如众乐乐所以专门开一篇讲讲。其实这些东西没啥用,但是造轮子真的好好玩啊。 最终效果:
完整可运行的Slackbot,如果还没有准备好,可以看一下我之前写的 《一个很可爱的Slack-bot》 。
附加信息,一个Slack内消息的一种,可以表现得比普通信息更加美观。可以添加很多内容。比如通知、颜色、作者名称和链接还有头像、标题和标题链接、还有领域将文本左右排列、图像、页脚,页脚图像、时间戳。
像这样:
其实看看官方文档这些就很清楚了,真的很好玩。 message-attachments
有些时候,频道内消息泛滥,我们就需要一个一键清除消息的功能了。Slack官方没有提供,那我们自己实现吧,使用chat.delete api即可。
官方的示例写的非常完善,但是要求也很细致,需要频道id和ts(时间戳),频道id很容易拿到,但是要删除的消息的ts却不好获取,这个时候我们就需要另一个api了。
channels.history 这个api允许bot获取该频道的所有消息的历史纪录,获取每条消息的ts使用chat.delete api 删除。
我一般是通过slackbot调用这个脚本所以还使用了sys.argv命令
脚本代码:
# coding: utf-8 import urllib.request import re import sys cmd1=sys.argv cmd1=str(cmd1[1]) #count=50的意思是获取最近50条。 conditionsSetURL = '''https://slack.com/api/channels.history?token=<your token>&channel='''+cmd1+'''&count=50&pretty=1''' headers={'content-type': 'application/json'} req = urllib.request.Request(url=conditionsSetURL,headers=headers,method='POST') response = urllib.request.urlopen(req) response = response.read().decode('utf-8') tss = re.findall(r'ts": "(.+?)"',response) for key in tss: conditionsSetURL = '''https://slack.com/api/chat.delete?token=<your token>&channel='''+cmd1+'''&ts='''+key+'''&pretty=1''' headers={'content-type': 'application/json'} req = urllib.request.Request(url=conditionsSetURL,headers=headers,method='POST') response = urllib.request.urlopen(req)
cmd1的作用是我从slackbot调用该脚本时将频道id发送过来。
count数字建议不要设置的太大,因为python的运行效率问题,太大有可能会直接卡死。
以上代码内有一个your token就是你的bot的token。
your token
这个就很简单啦在任意python脚本内使用以下代码即可:
# coding: utf-8 import os os.system('<命令>')
一般来说,没有需求我是不会做任何费脑子的事情的, 写这篇文章的主要原因是我发现了一个小小的需求:“我不想每次远程下载bt都要到网页里操作,我想直接发给slackbot,让它自动下载。”
Q1.发送magnet:开头的磁力链接给slackbot
Q2.bot接收到磁力链接后删除我发送的信息
Q3.调用系统shell启动qbittorrent下载该磁力链接
Q4.发送信息回执并且给个链接可以直接查看下载进度
A1.就不用说了我主动发起的。
A2.就是我上面写的删除消息部分将count=1即可
A3.调用系统shell部分将代码改为:
# coding: utf-8 import sys import os cmd1=sys.argv cmd1=str(cmd1[1]) os.system('qbittorrent-nox '+cmd1)
A4.发送信息回执,其实很简单的,看一眼代码就知道了。
attachment = os.system("python3 /root/bot/bot-bt.py %s" % command), json.dumps([ { "title": 'BT下载任务已添加', "text": command, "footer": 'qbittorrent', "color": '#68A8EB', "footer_icon": "图片地址", "actions": [ { "type": "button", "text": "点此查看下载进度", "url": "url地址" } ] }, ])
command就是 slackbot获取到的你发给他的消息全文,bot收到消息收首先运行bt脚本调用qbittorrent下载,然后再发送这条信息给我,这条信息的text就是我之前发送的磁力链接文本。然后点击下面的按钮可以转到qbittorrent的web界面查看下载进度等。
其实这种无聊的探索蛮好玩的,一步步发现好多新的东西,目前在研究使用slack调用系统shell,但是感觉要是我一不小心手贱 rm -rf 那岂不是GG。而且调用系统shell后我还要获取执行完毕的返回,所以还没搞定,subprocess还没研究透,等弄出来了,再开一篇把。不过Slack竟然有又有了新玩意!interactivity,可交互的信息,这个也只能以后再弄了。
rm -rf
-EOF
一个简单的树莓派呼吸灯demo
本文包含以下内容:磁力链接、DHT 网络、如何下载、版权相关。
解决单用户模式重置密码的漏洞
advchange用来修改系统字体的,非常简单方便,修改完后注销重登陆即可看到效果。
直接引入 ThreadPoolExecutor 稍作修改即可
目录
热门标签
更多语言
站点信息