Wechaty
老早就想搞一个微信机器人了,但之前的可爱猫只能在Windows上运行,还要下载指定版本微信,怪麻烦的,想着有没有类似Mirai之类的可以挂在Linux上的机器人。这几天发现了Wechaty满足我的需要。
这次有了免费的Web版的了,不需要token就可以(购买的话200RMB/月,买不起买不起),我用的Python-wechaty,先用docker启动wechaty服务登录微信,在用python连接wechaty进行消息处理。
以下教程摘自官方文档。
启动Web协议服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16docker pull wechaty/wechaty:latest
export WECHATY_LOG="verbose"
export WECHATY_PUPPET="wechaty-puppet-wechat"
export WECHATY_PUPPET_SERVER_PORT="8080"
export WECHATY_TOKEN="python-wechaty-{uuid}"
docker run -ti \
--name wechaty_puppet_service_token_gateway \
--rm \
-e WECHATY_LOG \
-e WECHATY_PUPPET \
-e WECHATY_PUPPET_SERVER_PORT \
-e WECHATY_TOKEN \
-p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" \
wechaty/wechaty:latest其中WECHATY_PUPPET类似平台比如IPAD、PC等,这里选择Web端。WECHATY_TOKEN为自己设定,类似消息密钥,可由
import uuid;print(uuid.uuid4());
生成连接服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import os
os.environ['WECHATY_PUPPET_SERVICE_TOKEN']="python-wechaty-{uuid}"
os.environ['WECHATY_PUPPET_SERVICE_ENDPOINT']="ip:8084"
import asyncio
from typing import List, Optional, Union
from wechaty_puppet import FileBox # type: ignore
from wechaty import Wechaty, Contact
from wechaty.user import Message, Room
class MyBot(Wechaty):
async def on_message(self, msg: Message):
"""
listen for message event
"""
from_contact: Optional[Contact] = msg.talker()
text = msg.text()
room: Optional[Room] = msg.room()
if text == 'ding':
conversation: Union[
Room, Contact] = from_contact if room is None else room
await conversation.ready()
await conversation.say('dong')
file_box = FileBox.from_url(
'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/'
'u=1116676390,2305043183&fm=26&gp=0.jpg',
name='ding-dong.jpg')
await conversation.say(file_box)
asyncio.run(MyBot().start())给机器人发送
ding
,会回复dong
加一张图片。
之后再探索出别的我再写,先这样
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 兜里有糖!
评论