一步一步教你用wechaty+百度云主机打造一个带你穿越星际的微信机器人

简介: 一步一步教你用wechaty+百度云主机打造一个带你穿越星际的微信机器人

一、一步一步教你用wechaty+百度云主机打造一个带你穿越星际的微信机器人


  • wechaty呢,就是一个神奇得能够沟通各种聊天工具得中间件包括但不限于微信(这样严谨不?)
  • 百度云呢是用得它得主机,速度很快
  • 走你!

image.png


二、搞定服务器


1.活动地址


百度云地址cloud.baidu.com/campaign/bc…

找到新人免费上云活动,然后开始!!!

image.png


2.注册


到手!!!image.png


3.修改管理密码


控制台修改密码就不说了,改完后ssh连接


三、wechaty配置


1.tocken申请


免费token申请地址: pad-local.com(温馨提示: 免费的token有效期为7天,如需使用有效期更长的token,请访问wechaty官网: wechaty.js.org/)


2.docker下载及配置


在终端里输入以下指令

apt update
 apt install docker.io
 docker pull wechaty/wechaty:latest
 export WECHATY_LOG="verbose"
 export WECHATY_PUPPET="wechaty-puppet-wechat"
 export WECHATY_PUPPET_SERVER_PORT="8080"
 export WECHATY_TOKEN="puppet_padlocal_xxxxxx" # 这里输入你自己的token
 docker run -ti --name wechaty_puppet_service_token_gateway --rm -e WECHATY_LOG -e WECHATY_PUPPET -e WECHATY_TOKEN -e WECHATY_PUPPET_SERVER_PORT -p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" wechaty/wechaty:latest


3.启动docker以后输出如下


image.png

微信扫描二维码即可登录,登陆成功有提示


4.注意事项


获取docker镜像比较慢,有两种办法

  • 1.切换国内docker mirror点
  • 2.直接 docker pull wechaty/wechaty:latest& 后台下载,不用管它


四、本地配置


1.wechaty环境配置


!pip install wechaty==0.7dev17


2.demo示例


  • 注意区分操作系统
  • 注意token不用双引号(此坑踩了会)


3各平台配置


3.1 linux


export WECHATY_PUPPET=wechaty-puppet-service
export WECHATY_PUPPET_SERVICE_TOKEN=puppet_padlocal_*************


3.2 win


set WECHATY_PUPPET=wechaty-puppet-service
set WECHATY_PUPPET_SERVICE_TOKEN=puppet_padlocal_*************
import os
import asyncio
import paddlehub as hub
import cv2
import time
from wechaty import (
    Contact,
    FileBox,
    Message,
    Wechaty,
    ScanStatus,
)
model = hub.Module(name="humanseg_lite")
def img_koutu():
    img_path = r'dongman/dongman.jpg'
    # 图片转换后存放的路径
    img_new_path = os.path.join('humanseg_output', 'dongman' + '.png')
    print(img_new_path)
    if os.path.exists('humanseg_output/dongman.png'):
        os.remove('humanseg_output/dongman.png')
    res = model.segment(
        paths=[os.path.join(img_path)],
        visualization=True,
        output_dir='humanseg_output')
    # 返回新图片的路径
    while not os.path.exists(img_new_path):
        time.sleep(1)
    return img_new_path
def merge (img_path):
    # import cv2
    # cv2.namedWindow("person")  # 定义一个窗口
    back_img_path='background.jpg'
    new_img_path = r'merge/result.png'
    frame = cv2.imread(back_img_path, cv2.IMREAD_COLOR)  # 捕获图像1
    frame = cv2.resize(frame, (1000,600))
    print('background shape: ',frame.shape)
    # IMREAD_UNCHANGED  If set, return the loaded image as is (with alpha channel, otherwise it gets cropped).
    # 因此Png必须是4通道的IMREAD_UNCHANGED
    person = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
    # person=cv2.resize(person, (300, 600))
    rows, cols, channels = person.shape
    print('person shape: ',rows, cols, channels )
    dx, dy = 120, 150
    roi = frame[dx:dx + rows, dy:dy + cols]
    print(roi.shape)
    for i in range(rows):
        for j in range(cols):
            if not (person[i, j][3] == 0):  # 透明的意思
                roi[i, j][0] = person[i, j][0]
                roi[i, j][1] = person[i, j][1]
                roi[i, j][2] = person[i, j][2]
    frame[dx:dx + rows, dy:dy + cols] = roi
    cv2.imwrite(new_img_path, frame)
    return new_img_path
def dongman(img_path, img_name):
    # 图片转换后存放的路径
    img_new_path = r'dongman/dongman.jpg'
    print(img_new_path)
    model = hub.Module(name='animegan_v2_shinkai_33')
    result = model.style_transfer(images=[cv2.imread(img_path)], visualization=True,
                                  output_dir='dongman')
    cv2.imwrite(img_new_path, result[0])
    return img_new_path
async def on_message(msg: Message):
    if msg.text() == 'ding':
        await msg.say('这是自动回复: dong dong dong')
    if msg.text() == 'hi' or msg.text() == '你好':
        await msg.say('这是自动回复: 机器人目前的功能是\n- 收到"ding", 自动回复"dong dong dong"\n- 收到"图片", 自动回复一张图片')
    if msg.text() == '图片':
        url = 'https://ai.bdstatic.com/file/403BC03612CC4AF1B05FB26A19D99BAF'
        # 构建一个FileBox
        file_box_1 = FileBox.from_file('xx.jpg', name='今天做作业了吗?')
        await msg.say(file_box_1)
    # 如果收到的message是一张图片
    if msg.type() == Message.Type.MESSAGE_TYPE_IMAGE:
        # 将Message转换为FileBox
        file_box_2 = await msg.to_file_box()
        # 获取图片名
        img_name = file_box_2.name
        # 图片保存的路径
        img_path = './image/' + img_name
        # 将图片保存为本地文件
        await file_box_2.to_file(file_path=img_path)
        # 调用图片风格转换的函数
        img_new_path = dongman(img_path, img_name)
        print(img_new_path)
        img_new_path = img_koutu()
        print(img_new_path)
        img_new_path = merge(img_new_path)
        print(img_new_path)
        # 从新的路径获取图片
        file_box_3 = FileBox.from_file(img_new_path)
        await msg.say(file_box_3)
async def on_scan(
        qrcode: str,
        status: ScanStatus,
        _data,
):
    print('Status: ' + str(status))
    print('View QR Code Online: https://wechaty.js.org/qrcode/' + qrcode)
async def on_login(user: Contact):
    print(user)
async def main():
    # 确保我们在环境变量中设置了WECHATY_PUPPET_SERVICE_TOKEN
    if 'WECHATY_PUPPET_SERVICE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Python Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
        ''')
    bot = Wechaty()
    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)
    await bot.start()
    print('[Python Wechaty] Ding Dong Bot started.')
asyncio.run(main())


4.本地开发运行


python main.py

image.png


五、星际穿越的流程


计划在本机上开发赋能,程序测试完成OK后,再上服务器,敬请期待2天

image.png


1.动漫画


image.png


2.抠图


image.png


3.科幻海报合成


3.1 背景


image.png


3.2结果


image.png


六、linux服务器部署


1.安装paddlepaddle


pip install paddlepaddle


2.安装paddlehub


pip install paddlehub


3.环境变量设置


export WECHATY_PUPPET=wechaty-puppet-service
export WECHATY_PUPPET_SERVICE_TOKEN = "puppet_padlocal_换成你的key"


4.启动docker


docker run -ti --name wechaty_puppet_service_token_gateway --rm -e WECHATY_LOG -e WECHATY_PUPPET -e WECHATY_TOKEN -e WECHATY_PUPPET_SERVER_PORT -p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" wechaty/wechaty:latest


5.后台运行程序


python main.py &


目录
相关文章
|
9月前
|
存储 监控 机器人
不论微信钉钉还是什么软件,我写了个通用的消息监控处理机器人
不论微信钉钉还是什么软件,我写了个通用的消息监控处理机器人
|
11月前
|
机器人 数据安全/隐私保护 Windows
云桌面上跑微信机器人,不需要一直开着windows系统了(部署运行机器人)
接上篇文章,本文主要介绍如何在云桌面上部署运行微信机器人
171 1
云桌面上跑微信机器人,不需要一直开着windows系统了(部署运行机器人)
|
运维 机器人 Java
Springboot 整合 企业微信机器人助手推送消息
Springboot 整合 企业微信机器人助手推送消息
899 0
Springboot 整合 企业微信机器人助手推送消息
|
监控 机器人 API
利用itchat搭建微信机器人详解(附三个实用示例)(中)
2011年1月21日,微信推出第一个正式版本,到现在已有7个年头。从一开始的不被看到好,到现在的用户量超10亿,大众的日常生活越来越离不开微信。人生苦短我用Python,有没有办法通过Python来对我们使用微信提供一些便利呢? 答案肯定是有的,在Github上有一个基于微信网页版接口微信开源库:itchat,通过几十行的代码就能轻松实现一个微信机器人。本章我们就来了解学习这个库,然后通过三个实用案例来帮大家玩转这个库。
1071 0
|
资源调度 机器人
微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人
微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人
3790 4
微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人
|
机器人 API Python
Python基于PC版微信实现机器人
Python基于PC版微信实现机器人
1779 0
Python基于PC版微信实现机器人
|
SQL 机器学习/深度学习 JSON
钉钉/企业微信机器人:“Github触发器”与“Issue机器人”
众所周知,在Serverless领域中,触发器是FaaS必不可少的一部分;一个FaaS平台,他的触发器数量、质量以及类型,很可能会决定这个FaaS平台是否能成为“主流”平台;因为触发器不仅仅是一种功能的体现,更是解决普遍性业务诉求的一个重要途径;目前来看,各个云厂商所提供的触发器基本上都会包括API网关触发器、对象存储触发器、时间触发器等,当然也有厂商提供一定的消息触发器、日志触发器、甚至是一些SQL相关的触发器、CDN触发器等,那么在我们的实际生产生活中,这些表面上看起来“很基础”的触发器,是否可以升级成为一个有趣的“高级触发器”呢?
496 0
|
机器人 Python
Python + Wxpy 搭建简单微信机器人
Python + Wxpy 搭建简单微信机器人
|
存储 人工智能 运维
互联网企业助力北京冬奥会:阿里云后端保障,百度AI抢镜,猎豹机器人火到外网……
互联网企业助力北京冬奥会:阿里云后端保障,百度AI抢镜,猎豹机器人火到外网……
420 0
互联网企业助力北京冬奥会:阿里云后端保障,百度AI抢镜,猎豹机器人火到外网……