跳转到主要内容

群管自动化场景

使用 juhe-cli 实现微信群管理的自动化操作

场景描述

实现微信群管理的自动化功能,包括自动拉群、踢人、修改群公告、群发通知等, 适用于社群运营、客户群管理、活动群维护等场景。

实现步骤

  1. 获取群列表,识别需要管理的群聊
  2. 监听新成员入群事件
  3. 自动发送欢迎语或群规则
  4. 检测违规行为并自动踢出

涉及命令

  • 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
done

2. 自动踢出发广告成员

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
done

3. 批量邀请好友进群

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
done

Python 完整示例

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()

部署建议

  • 使用配置文件管理群列表和规则
  • 记录操作日志便于审计
  • 设置管理员白名单避免误操作
  • 配合消息队列处理高并发场景
  • 定时任务执行批量操作(如群发通知)

注意事项

  • 遵守微信使用规范,避免频繁操作导致限制
  • 踢人操作需谨慎,建议先警告再移除
  • 群发消息注意频率,避免被识别为骚扰
  • 定期更新关键词库应对新广告形式