使用 itchat 搭建微信个人号机器人:从安装到实战

七月
七月
发布时间:2026-10-13 | 4人浏览过
原创

本文详细介绍如何利用 Python 开源库 itchat 搭建微信个人号机器人。内容涵盖环境安装、登录状态保持、消息类型监听与处理,以及结合图灵机器人 API 实现智能自动回复的完整代码示例。适合希望快速掌握微信自动化接口的开发者参考。

itchat 库简介与功能概述

itchat 是一个 Python 开源第三方库,专门用于通过网页版微信接口搭建个人号机器人。仅需几十行代码,即可实现自动处理各类微信消息的功能。其应用场景广泛,包括自动添加好友、构建自动回复机器人、还原撤回消息、分析好友性别比例及地理分布,甚至爬取朋友圈数据进行统计分析等。

本文旨在演示如何快速实现一个基础的聊天机器人功能。若需深入了解 itchat 的高级用法与详细文档,请访问官方文档:https://itchat.readthedocs.io/zh/latest/。

环境安装与登录配置

环境安装


pip install itchat

登录配置


itchat.auto_login(hotReload=True)

执行登录代码后,控制台会显示一个二维码,使用手机微信扫码即可完成登录。通过设置参数 hotReload=True,可以保存登录状态文件。这样在后续重启程序时,即可跳过扫码步骤,直接恢复登录状态,提升开发效率。

消息类型

参数 类型
TEXT 文本
MAP 位置
CARD 名片
SHARING 分享
PICTURE 图片表情
RECORDING 语音
ATTACHMENT 附件
VIDEO 小视频

消息发送与类型处理

发送消息


send(msg='text',toUserName=None)
  • msg:指定发送的消息内容。
  • toUserName:指定接收者用户名,若设为 None 则表示发送给自己。

不同内容类型的发送格式如下:

  • 图片:使用格式 @img@img_path,其中 img_path 为本地图片路径。
  • 视频:使用格式 @vid@vid_path,其中 vid_path 为本地视频路径。
  • 文件:使用格式 @fil@file_path,其中 file_path 为本地文件路径。

注意:接收到的附件文件默认保存在当前运行路径下的 msg['FileName'] 所指目录中,请根据实际路径读取或保存文件。

会话监听与图灵机器人集成

注册会话监听


#TEXT:监听的消息类型
@itchat.msg_register(TEXT)
def text_reply(msg):
 #过滤掉某人,NickName是昵称
  if msg.User['NickName'] == 'xxx':
    pass
  else:
    # return_text = tuling(msg.text)
    #这种send方法会自己回复自己的消息
    # msg.user.send(u'收到了')
    #只回复对方的消息
    return u'收到了'
 

图灵聊天机器人

首先,需在图灵机器人官网(http://www.tuling123.com)注册账号并创建机器人。如果是学习用途,可使用免费版,每个账号最多创建 5 个机器人,且单个机器人每日接口调用次数限制为 5000 次。


#申请机器人后会拿到一个key
key = '3c925fbee6f84ad2aa032ab05d4581b0'
def tuling(info):
  url = "http://www.tuling123.com/openapi/api?key=%s&info=%s" % (key, info)
  r = requests.get(url)
  #返回消息
  return r.json().get('text')

完整代码示例与参考

附上完整代码(支持文本、图片及群聊)


# coding: utf-8 
# @Time  : 2019/2/20 23:32
# @Author : lsn
# @File  : itchat_demo.py
# @Software: PyCharm
import itchat
import requests
from itchat.content import *

key = '3c925fbee6f84ad2aa032ab05d4581b0'


def tuling(info):
  url = "http://www.tuling123.com/openapi/api?key=%s&info=%s" % (key, info)
  r = requests.get(url)
  return r.json().get('text')


@itchat.msg_register(TEXT)
def text_reply(msg):
  if msg.User['NickName'] == 'xxx':
    pass
  else:
    return_text = tuling(msg.text)
    # msg.user.send(return_text)
    return return_text


@itchat.msg_register(
  [PICTURE, RECORDING, ATTACHMENT, VIDEO])
def download_files(msg):
  print msg['Type']
  print msg['FileName']
  msg['Text'](msg['FileName'])
  return '@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName'])


@itchat.msg_register(TEXT, isGroupChat=True)
def group_text_reply(msg):
  group_list = list()
  # 针对指定群回复
  group_list.append(u'弹一弹')
  group_list.append(u'养生游戏分享')
  # 当然如果只想针对@你的人才回复,可以设置if msg['isAt']:
  if msg.User['NickName'] in group_list:
    return tuling(msg.text)
  else:
    pass


itchat.auto_login(hotReload=True)
itchat.run()

参考来源:https://www.jb51.net/article/162809.htm

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表