Python中如何使用wechat-admin通过Web管理微信和微信机器人

我来求赞(✪ω✪) ,只说重点,其他的有兴趣的可以看 基于 Flask+Vue+Celery+SQLAlchemy+Redis 等实现的微信管理系统

目前包含的功能

  • 支持显示好友列表,可过滤
  • 支持显示群聊列表,可过滤
  • 可以同时给多个用户 /群聊成员发送消息,支持发送文件,emoji 表情。可预览
  • 如果为群聊创建者,可以删除(多个)成员
  • 可以选择好友 /群聊成员创建新群
  • 对自动建群、加群关键词、邀请文本等可配置
  • 永久保存消息,可以通过消息列表页面查看和过滤。接收消息进程停止自动重启
  • 支持消息提醒
  • 支持发送加群聊成员好友请求
  • 自动添加联系人,拉对方入群,群满之后自动创建新群
  • 支持灵活的插件系统,内置图灵机器人、ChatterBot、Simsimi 等插件
  • 可以指定公众号,当公众号发布文章后自动转发到指定的群聊里
  • 群成员可发起投票踢人,可以灵活的设置投票规则

效果可以看这个视频

用的技术和库

前端

Vue+Element-UI+Vue-cli+Vue-Router+Axios

其中 Vue 除了 SSR 外(没必要)的各种功能基本都用到了。

后端(只支持 Python 3 )

Flask+Celery+SSE+Walrus+Gunicorn+Flask-Migrate+Flask-SQLAlchemy+ItChat ( Fork 版本)+Wxpy ( Fork 版本)+PyMySQL+Redis

在目前这种用 Vue+Flask 实现的较完整的、相对复杂的例子很少的情况下,这个项目也可以让新手了解到前后端是如何结合的和构建的。

另外提供 Docker Compose 的方式让你快速部署应用。

插件

目前自带了 4 个插件:

  • Simsimi。也就是当年的小黄鸡。默认未开启
  • Help。帮助插件,根据所有插件的 description 属性的内容生成
  • Tuling。图灵机器人,@群主即可开聊
  • Chatter。基于机器学习的 ChatterBot,要和群主私聊

欢迎 star: dongweiming/wechat-admin 和使用,如果你有更多有意思的想法和功能欢迎提交 PR 和 Issue,另外也可以贡献更多的插件。

如果你对本项目有兴趣,可以加 Sanic (微信号 python-org )入群感受,也可直接扫描如下二维码加我,如果验证信息中包含 python 可以直接进群,否则可以和 Py 之美私聊进群, 可打开项目链接进群:

其中第三个二维码是微信公众号「 Python 之美」(微信号 python_cn ),我将在公众号中介绍这个项目技术选型,实现,走过的一些坑,还有 Vue 等相关的一些内容,欢迎关注。


Python中如何使用wechat-admin通过Web管理微信和微信机器人

26 回复

前排支持


这个需求挺常见的。wechat-admin 是一个基于 itchat-uos 的微信机器人 Web 管理面板,让你能在浏览器里管理微信和机器人。

首先,你得确保环境装对了。用 pip 安装核心依赖:

pip install itchat-uos flask flask-socketio

wechat-admin 本身可能没有直接上 PyPI,你得从 GitHub 上拉下来。通常项目结构里会有一个主启动文件,比如叫 app.pyrun.py

一个最基础的启动脚本大概长这样:

# run_bot.py
import itchat
from itchat.content import *
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
import threading
import time

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key_here'
socketio = SocketIO(app)

# 存储登录的微信实例
wechat_instance = None

# 处理文本消息
@itchat.msg_register(TEXT)
def text_reply(msg):
    print(f"收到消息: {msg['Text']} from {msg['FromUserName']}")
    # 这里可以加你的自动回复逻辑
    # 例如:return '自动回复: ' + msg['Text']
    return None

# Web 路由 - 管理页面
@app.route('/')
def index():
    return render_template('index.html')  # 需要自己写前端页面

# 通过 Web 接口发送消息
@app.route('/send_msg/<user>/<message>')
def send_message(user, message):
    if wechat_instance:
        wechat_instance.send_msg(message, toUserName=user)
        return f"消息已发送给 {user}"
    return "微信未登录"

# 启动微信登录(在后台线程)
def start_wechat():
    global wechat_instance
    wechat_instance = itchat.new_instance()
    wechat_instance.auto_login(hotReload=True, enableCmdQR=2)  # 控制台显示二维码
    wechat_instance.run()

if __name__ == '__main__':
    # 在新线程中启动微信
    wechat_thread = threading.Thread(target=start_wechat)
    wechat_thread.daemon = True
    wechat_thread.start()
    
    # 启动 Flask Web 服务
    print("Web 管理界面将在 http://localhost:5000 启动")
    socketio.run(app, host='0.0.0.0', port=5000, debug=False)

不过说实话,上面这个只是原理演示,功能很基础。完整的 wechat-admin 应该包含用户管理、消息记录、群管功能等。我建议你直接去 GitHub 搜 wechat-admin 找现成的项目,比如 cixingguangming5555/wechat-assistant 这类,它们通常有更完善的前后端。

跑起来之后,一般流程是:先启动脚本,扫码登录微信,然后浏览器打开 localhost:5000 就能在网页上查看消息、联系人,并手动发送消息了。自动回复的逻辑需要你自己在 @itchat.msg_register 装饰的函数里实现。

核心就两点:用 itchat-uos 挂住微信,用 Flask 提供 Web API 和页面。自己从头写挺麻烦的,建议基于开源项目改。

总结:用现成的 wechat-admin 项目更省事。

最好加上 “可能导致账号被封”的提示。。。

我觉得还是不要这么大张旗鼓的好。。。

#3 是怕被灭的节奏么? 说出你的故事~

好吧 原来 LZ 是 Dong 其实我就很好奇 为嘛这种出技术贴的公众号会被封 ~~

嗯,之前确实被封过一个号,要不然这篇前天就发出来了,这 2 天研究,总结了三点经验:

https://github.com/dongweiming/wechat-admin#如何解决当前登录环境异常为了你的帐号安全暂时不能登录 web 微信的问题

python 太法好

也是基于 web 微信抓包做的吗?可以唯一标志用户 id 吗?

支持下大佬。

大佬考虑去掉对 mysql 和 redis 的依赖吗… 感觉给别人用的话不太好交付

大佬工作不饱和哈哈哈,开个玩笑,很喜欢看大佬的博客

大佬给力

wxpy 实现了一个 puid,只要 bot.pkl 这个文件别删,理论上是可以唯一的。不过如果成员的某个属性变更会影响这个值。

前排支持

可以理解为给成员属性做了一次 md5 吗?那不同微信号的相同好友呢?

请问可以自动加群吗?

支持一下明哥

要注意我的开源 licenses 哦,本项目只用来技术交流

支持支持

楼主的代码风格不错,对这个项目应该是比较用心的

搭建好复杂的说

支持一下大佬,天气预报和笑话功能很成功

支持支持

扫码登陆的微信机器人,看这里 http://www.yunthink.cn

花里胡哨的牛

回到顶部