成品分享下载地址:https://www.pan38.com/yun/share.php?code=JCnzE 提取密码:7780【仅供分享】
我这里要说明一下 这个是之前易语言论坛的一位大神分享的python微信综合模块,模块支持的功能非常多,比如自动同意,好友消息检测,关键词自动回复这些功能,那么我这里分享的仅仅只是他所支持的部分核心功能,这个微信机器人包含自动同意好友请求、关键词自动回复、群消息处理、定时任务等功能模块。使用时需要安装itchat和wxpy库,可通过pip install itchat wxpy安装。机器人支持文本、图片、语音等多种消息类型处理,并可通过配置文件自定义回复规则。
源码部分:还是python代码,没有开发能力的建议直接用现成的模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import itchat
import time
import re
from threading import Thread
from wxpy import *
# 初始化机器人
bot = Bot(cache_path=True)
# 自动接受好友请求
@bot.register(msg_types=FRIENDS)
def auto_accept_friends(msg):
if '加群' in msg.text.lower():
msg.card.accept()
return "已接受好友请求,请发送'进群'获取入群链接"
else:
msg.card.accept()
return "你好,我是AI助手,回复'帮助'获取功能列表"
# 关键词自动回复
REPLY_RULES = {
r'你好|hello|hi': '你好呀!',
r'帮助|功能': '''可用功能:
1. 天气查询:发送"天气 城市"
2. 翻译:发送"翻译 内容"
3. 计算器:发送"计算 表达式"''',
r'天气\s+(.+)': lambda x: f'正在查询{x.group(1)}的天气...',
r'计算\s+(.+)': lambda x: str(eval(x.group(1)))
}
# 消息处理函数
@bot.register([TEXT, PICTURE, RECORDING, VIDEO])
def auto_reply(msg):
try:
if msg.type == TEXT:
content = msg.text
for pattern, reply in REPLY_RULES.items():
if re.match(pattern, content, re.I):
if callable(reply):
return reply(re.match(pattern, content, re.I))
else:
return reply
return "抱歉,我不明白你的意思,回复'帮助'查看功能"
except Exception as e:
print(f"处理消息出错: {e}")
# 群消息处理
@bot.register(Group, TEXT)
def group_reply(msg):
if msg.is_at:
return f"@{msg.member.name} 我在呢!需要什么帮助?"
elif '禁言' in msg.text and msg.member.is_owner:
return "@全体成员 大家注意发言规范哦~"
elif '签到' in msg.text:
return f"@{msg.member.name} 签到成功!"
# 定时任务
def schedule_task():
while True:
now = time.strftime("%H:%M")
if now == "08:00":
groups = bot.groups().search('技术交流')
for group in groups:
group.send("早安!今日技术早报已更新...")
time.sleep(60)
# 启动定时任务线程
Thread(target=schedule_task, daemon=True).start()
# 保持运行
if __name__ == '__main__':
print("微信机器人已启动...")
embed()
# 机器人配置
CONFIG = {
"admin": ["你的微信昵称"], # 管理员列表
"blacklist": [], # 黑名单
"autoreply": True, # 开启自动回复
"accept_friends": True, # 自动接受好友
"keywords": { # 自定义关键词回复
"紧急": "请联系管理员 @xxx",
"投诉": "请描述具体情况"
},
"schedule": { # 定时任务配置
"morning_msg": "08:00",
"night_msg": "22:00"
}
}
# 数据库配置
DATABASE = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"db": "wechat_bot"
}
json
import requests
from datetime import datetime
def save_msg(msg):
"""保存聊天记录"""
with open('chat_history.log', 'a', encoding='utf-8') as f:
f.write(f"{datetime.now()} - {msg.sender}: {msg.text}\n")
def get_weather(city):
"""获取天气信息"""
url = f"http://wthrcdn.etouch.cn/weather_mini?city={city}"
try:
res = requests.get(url).json()
data = res['data']
return f"{city}天气:{data['forecast'][0]['type']},温度:{data['forecast'][0]['low']}~{data['forecast'][0]['high']}"
except:
return "天气查询失败"
def translate(text):
"""简单翻译功能"""
url = "http://fanyi.youdao.com/translate"
params = {
"doctype": "json",
"type": "AUTO",
"i": text
}
res = requests.get(url, params=params).json()
return res['translateResult'][0][0]['tgt']
def load_config():
"""加载配置文件"""
with open('config.py', 'r', encoding='utf-8') as f:
return json.load(f)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。