下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1281
这个微信自动回复机器人包含主程序、配置管理、工具函数和单元测试模块。主程序使用itchat库实现微信登录和消息处理,支持多线程处理消息队列,可以通过配置文件自定义回复规则和黑名单。
!/usr/bin/env python3
-- coding: utf-8 --
import itchat
import time
import re
from threading import Thread
from queue import Queue
class WechatAutoReply:
def init(self):
self.msg_queue = Queue()
self.reply_rules = {
r'你好|hello|hi': '你好,我是智能助手!',
r'时间|现在几点': lambda: f'现在是{time.strftime("%Y-%m-%d %H:%M:%S")}',
r'天气|weather': '请发送您所在的城市名称查询天气'
}
self.blacklist = set()
def login(self):
itchat.auto_login(hotReload=True, enableCmdQR=2)
print("登录成功!")
def message_handler(self, msg):
if msg['FromUserName'] in self.blacklist:
return
content = msg['Text'].strip().lower()
for pattern, reply in self.reply_rules.items():
if re.search(pattern, content):
if callable(reply):
return reply()
return reply
return "抱歉,我不明白您的意思。输入'帮助'查看功能"
def process_queue(self):
while True:
msg = self.msg_queue.get()
reply = self.message_handler(msg)
itchat.send(reply, toUserName=msg['FromUserName'])
self.msg_queue.task_done()
def run(self):
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
self.msg_queue.put(msg)
Thread(target=self.process_queue, daemon=True).start()
itchat.run()
if name == 'main':
bot = WechatAutoReply()
bot.login()
bot.run()
import json
import configparser
from datetime import datetime
def load_config(config_path='config.ini'):
config = configparser.ConfigParser()
config.read(config_path)
return config
def save_config(config, config_path='config.ini'):
with open(config_path, 'w') as f:
config.write(f)
def format_time(timestamp=None):
return datetime.now().strftime('%Y-%m-%d %H:%M:%S')
def is_blacklist(user, blacklist):
return user in blacklist