腾讯云服务

  • 进入腾讯云 官网,购买轻量云服务器即可,我购买的65元/年,镜像系统为Ubuntu 20.04
  • 购买后进入控制台,进入自己购买的轻量应用服务器,重置密码,开启服务器
  • 使用Tabby、xshell等远程进行远程连接,默认用户名为ubuntu,使用sudo su切换到管理员身份运行

Nginx配置(非必需)

使用Nginx 进行反向代理

# install Nginx
sudo apt-get install nginx

sudo /etc/init.d/nginx start #启动nginx
sudo /etc/init.d/nginx stop # 停用nginx
sudo systemctl status nginx # 查看nginx运行状态
sudo rm /etc/nginx/sites-enabled/default #删除默认配置
sudo touch /etc/nginx/sites-available/wechat_connector#建立项目文件
sudo ln -s /etc/nginx/sites-available/wechat_connector/etc/nginx/sites-enabled/wechat_connector #设置软链接
sudo vim /etc/nginx/sites-enabled/wechat_connector #编辑项目文件

# 添加以下配置文件
server { 
    server_name localhost; # 个人域名
    listen 80; # 端口
    location /weixin { 
	    # 代理端口,此处需要在云服务器安全组开启8000端口
        proxy_pass http://127.0.0.1:8000; 
    }
}

安装完成后进入http://ip:80即可看到如下画面表示安装成功:

Miniconda配置

整个内容的交互基本通过Python完成,此处安装miniconda3 创建单独的Python环境

sudo apt-get upgrade
sudo apt-get update

cd /home

# install miniconda package
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh 

export  PATH=/root/miniconda3/bin:$PATH # 添加环境变量
source /root/.bashrc # 环境变量生效
echo $PATH # 输出环境变量,安装完成后重新连接服务器进入root

# create python env
conda create -n wechat python=3.8 ipykernel
conda activate wechat
pip install werobot

screen使用

为保证后台进程的运行,需要在后台开启,这里我使用简单的screen包运行多个命令后台,更推荐使用Supervisor 守护进程:

sudo apt-get install screen

# screen基本命令
screen -S SessionName # 创建为name的会话
screen -ls # 查看所有会话
screen -r **** # 重新连接会话
screen -S **** -X quit # 删除会话
crtl + a + d # 退出会话
killall screen # 关闭所有进程

werobot

  • 关于订阅号后台消息与用户的互动,这里我们主要使用Python的Werobot 包,此处连接服务的常用配置参数有:
SERVER="auto",
HOST="0.0.0.0",
PORT="80",
SESSION_STORAGE=None,
APP_ID="your APP_ID",
APP_SECRET="your_APP_SECRET",
ENCODING_AES_KEY="XWbRw4lacZrkfhslfldsjflsdjflds02t3"
  • 其中的HOST和PORT为服务器的公网IP以及80端口,开发者ID和APPSecret登录进入个人订阅号 的基本配置即可查看,忘记密码直接重置即可
  • 接着点击修改配置,记录EncodingAESKey:

简单对话机器人

功能描述:此处机器人为一个计算器,收到1+2+3类似输出结果,其他则输出“Please try again!”,运行vim /home/ubuntu/robot.py,添加以下代码:

import re
import werobot
from werobot.replies import TextReply, ImageReply, VoiceReply, SuccessReply
from werobot.replies import ArticlesReply, Article, SuccessReply, MusicReply


# 输入微信公众平台请求凭证
robot = werobot.WeRoBot(token='your token')         # 写入服务器配置填写的 Token

def cal(str):
    try:
        result = str(eval(str))

    except:
        result = 'Please try again!'
    return result

# @robot.text 修饰的 Handler 只处理文本消息
@robot.text
def reply_text(message):
    print(message.content)
    return cal(message.content)

robot.config.update(
    SERVER="auto",
    HOST="0.0.0.0",
    PORT="80",
    SESSION_STORAGE=None,
    APP_ID="your APP_ID",
    APP_SECRET="your_APP_SECRET",
    ENCODING_AES_KEY="XWbRw4lacZrkfhslfldsjflsdjflds02t3"	
)

robot.run()
screen -S wechat
conda activate wechat
python robot.py
#  ctrl+a+d 退出

注意:使用过程重复发消息会导致阻塞,使用ps -fA | grep python进行查询,并使用kill对应进程,具体可参考StackOverflow