群管自动化场景
使用 juhe-cli 实现微信群管理的自动化操作
场景描述
实现微信群管理的自动化功能,包括自动拉群、踢人、修改群公告、群发通知等, 适用于社群运营、客户群管理、活动群维护等场景。
实现步骤
- 获取群列表,识别需要管理的群聊
- 监听新成员入群事件
- 自动发送欢迎语或群规则
- 检测违规行为并自动踢出
涉及命令
room list- 获取群列表room invite- 邀请好友进群room remove- 移除群成员room modify_notice- 修改群公告msg send_text- 发送群消息
代码示例
1. 新成员自动欢迎
bash
#!/bin/bash
# 监听新成员入群并发送欢迎语
while true; do
# 获取群成员列表
rooms=$(juhe-cli room list '{}')
# 解析群成员(需要配合消息事件)
# 这里假设通过 sync API 获取到新成员事件
# 检测到新成员 "wxid_new_user" 加入群 "123456789"
new_member="wxid_new_user"
chat_room_id="123456789"
# 发送欢迎语
juhe-cli msg send_text "{\"to_wxid\": \"$chat_room_id\", \"content\": \"欢迎新朋友加入!\n\n请阅读群规则:\n1. 禁止发广告\n2. 友好交流\n3. 分享有价值的内容\"}"
# @新成员提醒
juhe-cli msg send_text "{\"to_wxid\": \"$chat_room_id\", \"content\": \"@$new_member 欢迎入群!\"}"
sleep 5
done2. 自动踢出发广告成员
bash
#!/bin/bash
# 检测并踢出发广告的成员
while true; do
# 获取群消息
messages=$(juhe-cli sync msg '{}')
# 广告关键词列表
spam_keywords=("加我" "代购" "兼职" "刷单" "微商" "代刷" "外挂")
for msg in messages; do
content=$(echo "$msg" | jq -r '.content')
from_user=$(echo "$msg" | jq -r '.from_user')
chat_room=$(echo "$msg" | jq -r '.to_wxid')
# 检查是否包含广告关键词
is_spam=false
for keyword in "${spam_keywords[@]}"; do
if [[ "$content" == *"$keyword"* ]]; then
is_spam=true
break
fi
done
# 如果是广告,踢出成员
if [ "$is_spam" = true ]; then
juhe-cli room remove "{\"chat_room_id\": \"$chat_room\", \"wxid\": \"$from_user\"}"
# 发送系统消息
juhe-cli msg send_text "{\"to_wxid\": \"$chat_room\", \"content\": \"已移除违规成员:$from_user\"}"
fi
done
sleep 3
done3. 批量邀请好友进群
bash
#!/bin/bash
# 批量邀请好友加入指定群
chat_room_id="123456789"
# 好友列表(可以从文件读取)
friends=(
"wxid_friend1"
"wxid_friend2"
"wxid_friend3"
)
for friend in "${friends[@]}"; do
# 邀请进群
juhe-cli room invite "{\"chat_room_id\": \"$chat_room_id\", \"wxid\": \"$friend\"}"
# 间隔延迟避免频率限制
sleep 2
done
echo "批量邀请完成"}4. 定时群发通知
bash
#!/bin/bash
# 定时向所有群发送通知
announcement="📢 明天晚上 8 点有技术分享活动,欢迎大家参加!"
# 获取所有群
rooms=$(juhe-cli room list '{}')
# 解析群 ID 列表
chat_room_ids=$(echo "$rooms" | jq -r '.[].chat_room_id')
# 向每个群发送通知
for chat_room_id in $chat_room_ids; do
juhe-cli msg send_text "{\"to_wxid\": \"$chat_room_id\", \"content\": \"$announcement\"}"
# 间隔延迟
sleep 1
done
echo "群发通知完成"}5. 修改群公告
bash
#!/bin/bash
# 批量修改多个群的公告
new_notice="📌 群公告更新\n\n1. 禁止发布无关内容\n2. 鼓励技术讨论\n3. 违规者将被移除"
# 群列表
rooms=(
"123456789"
"987654321"
"456789123"
)
for room in "${rooms[@]}"; do
juhe-cli room modify_notice "{\"chat_room_id\": \"$room\", \"notice\": \"$new_notice\"}"
echo "已更新群 $room 的公告"
sleep 1
donePython 完整示例
python
import json
import time
import subprocess
def run_command(cmd):
"""执行 CLI 命令"""
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return json.loads(result.stdout)
def auto_group_manage():
"""群管自动化主函数"""
spam_keywords = ['加我', '代购', '兼职', '刷单', '微商']
while True:
try:
# 获取新消息
messages = run_command('juhe-cli sync msg '{}'')
for msg in messages:
content = msg.get('content', '')
from_user = msg.get('from_user')
chat_room = msg.get('to_wxid')
# 检查是否是群消息
if not chat_room or not chat_room.endswith('@chatroom'):
continue
# 检测广告
if any(keyword in content for keyword in spam_keywords):
# 踢出成员
run_command(f'juhe-cli room remove '{{"chat_room_id": "{chat_room}", "wxid": "{from_user}"}}'')
# 发送系统通知
run_command(f'juhe-cli msg send_text '{{"to_wxid": "{chat_room}", "content": "已移除违规成员"}}'')
print(f"已踢出发广告成员: {from_user}")
# 检测新成员(假设有新成员入群事件)
# 这里需要配合实际的事件机制
except Exception as e:
print(f"发生错误: {e}")
time.sleep(3)
if __name__ == '__main__':
auto_group_manage()部署建议
- 使用配置文件管理群列表和规则
- 记录操作日志便于审计
- 设置管理员白名单避免误操作
- 配合消息队列处理高并发场景
- 定时任务执行批量操作(如群发通知)
注意事项
- 遵守微信使用规范,避免频繁操作导致限制
- 踢人操作需谨慎,建议先警告再移除
- 群发消息注意频率,避免被识别为骚扰
- 定期更新关键词库应对新广告形式