如何一步一步打造属于自己的server酱?
server酱很好用,但是它是为了大众打造的,有很多限制,比如每分钟发送消息限制,一次只能发送到一个平台等等,并且不开源,现在微信模板消息也通知即将取消,server酱最方便的通知方式即将成为过去式,趁此机会,向大家介绍一款我自己使用的完全开源的类server酱的推送通知bot。
本程序目的: 实现像server酱那样的推送服务,支持telegram、微信。
使用方法
因为注册模块是写在telegram里面的,所以目前不能脱离telegram运行,后期可能考虑将管理和注册模块移植到网页端。
前置准备
- 一台vps(必须)
- 一个域名(没有也无所谓)
- postgresql数据库
- python3.6以上
clone项目
1 | 首先clone项目 |
.env文件的配置
数据库的配置
首先需要配置数据库,因为我常用数据库是postgresql,所以目前只支持postgresql,虽然添加其他数据库就几行代码的事
推荐使用docker安装数据库,简单易上手,可以参考我的这个文章。
将.env_template文件名更改为.env并填充完**#数据库**以下的信息
telegram机器人的申请
- 首先需要有一个telegram账号,然后关注@BotFather
- 输入或者点击/newbot
- 这时候会让你输入你的bot名字,类似我们展示出来的名字,比如我输入了pakro’s push bot
- 上一步输入后会让你继续输入bot的用户名,类似我们的登录名,必须以bot结尾,比如我输入了pakros_push_bot
- botfather会给你一个TOKEN,这个TOKEN非常重要,不能泄露出去。
- 将获取到的TOKEN填写到.env文件的TELEGRAM_BOT_TOKEN一项中去。
申请流程如上图,TOKEN已打码
点击 t.me/pakros_push_bot 链接关注自己的机器人。
随便发送一条消息。
浏览器中打开 https://api.telegram.org/bot#TOKEN#/getUpdates ,将#TOKEN#替换为刚才获取到的TOKEN(bot不要删了)
将红框内的id填写入.env文件的TELEGRAM_CHAT_ID一项中。
到此,telegram的内容就设置完毕了。
企业微信的设置
这里的操作是复制的server酱的说明
- 用电脑打开企业微信官网,注册一个企业
- 注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
- 应用名称随便填写,可见范围选择公司名。
- 创建完成后进入应用详情页,可以得到应用ID( agentid ),应用Secret( secret ),复制并分别填到.env文件中的WECOM_AGENTID、WECOM_SECRET。
- 进入「我的企业」页面,拉到最下边,可以看到企业ID,复制并填到.env文件中的WECOM_COMPANYID。推送UID直接填@all ,推送给公司全员。
- 进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。
填写完三个key后,企业微信推送的设置也完成了。
UUID的设置
随便搜索一个uuid的生成网站生成一个UUID即可,然后将生成的UUID填写到.env文件的MY_UUID一项中。
到此,.env的配置就完成了,下面是服务器的配置。
服务器的配置
数据库的初始化
在PushBot文件下执行,python的安装方法可以参考我的这篇文章:
1 | python3 PushDatabase.py |
此时程序会自动初始化数据库并且添加你的个人信息进去,如果终端显示处理完成,那么说明数据库初始化成功,可以进行下一步了。
服务的启动
如果需要对启动参数进行修改,请打开MyServerJiang.py这个文件,拉到最底下。
两处红框处均可以修改
如果想要修改端口号,改动1234即可
如果没有前置代理(比如nginx或者caddy),需要直接运行的,可以将**[0]改为[1]**,这样程序就会监听所有ip地址,但是我不建议这样做,因为有暴露的风险。
如果使用caddy作为前置代理,可以参考我的配置:
1 | https://your.website.name { |
测试启动是否正常
执行下面的命令,测试启动是否正常。
1 | python3 MyServerJiang.py |
如果没有报错,那么有以下几种测试方法。
在telegram机器人聊天界面输入/myuuid,查看是否回复
浏览器中输入:https://yourip/?UUID={UUID}&text={HELLO}&desp={WORLD}
将UUID改为你自己的UUID,查看telegram和微信是否能接收到消息,并且浏览器也会显示{“status”:true}。
注册为服务
如果没有问题,那么可以将PushBot注册为服务了
首先要记录两个信息
1 | 在PushBot文件夹中输入如下命令 |
1 | 输入如下命令找到python安装位置 |
将上面两个结果记录下来。
1 | nano /etc/systemd/system/push.service |
修改下面的ExecStart一行的下面两个参数
/usr/local/python3/bin/python3.7
/root/PushBot/
1 | [Unit] |
保存退出
1 | systemctl daemon-reload |
到此,所有设置完毕,可以开始使用了。
番外
如果只需要telegram推送,而不需要微信推送的话,在注册完telegram机器人后,即可直接跳到服务器配置篇了,虽然数据库初始化会报错,但是不影响使用,因为注册新用户可以在telegram中进行。