Pancakes-Labs/astrbot_plugin_proactive_chat

一个能让 Bot 在私聊和群聊中发起主动消息的插件,拥有上下文感知、持久化数据、动态情绪、免打扰时段和 TTS 集成。还有独立 WebUI,可进行个性化配置。 An AstrBot plugin that enables Bot to send proactive messages in private and group chats, featuring context awareness, persistent data, dynamic emotions, do-not-disturb periods, and TTS integration. It also boasts an independent WebUI for personalized.

개요

astrbot_plugin_proactive_chat는 AstrBot(오픈소스 AI 챗봇 플랫폼)용 플러그인입니다. 대화가 일정 시간 침묵한 후에 봇이 자체적으로 메시지를 시작할 수 있게 합니다. 이 플러그인은 개인 채팅과 그룹 채팅 모두에서 작동하며, 각 세션을 개별적으로 기억하고 프롬프트, 타이밍, 감정, TTS 등을 조정할 수 있습니다.

주요 기능

기능 설명
시간 기반 트리거 설정 가능한 비활성 기간이 지나면 봇이 무작위 지연(최소-최대 범위 내)을 선택하고 메시지를 보냅니다.
시작 시 작업 자동 생성 플러그인이 로드될 때 사용자 명령 없이 첫 번째 선제적 작업을 자동으로 예약할 수 있습니다.
다중 세션 지원 여러 개인 채팅과 그룹에서 동시에 기능을 활성화할 수 있습니다. 각 세션에는 고유한 카운터와 타이머가 있습니다.
컨텍스트 인식 봇은 대화 기록 또는 최근 플랫폼 메시지(또는 둘 다)를 가져와 LLM에 전달하여 응답이 현재 주제에 맞게 할 수 있습니다.
개성 및 동적 감정 프롬프트에서 {{unanswered_count}}, {{current_time}}과 같은 자리 표시자를 사용하여 사용자가 무시한 횟수에 따라 봇이 더 "외롭다" 또는 "흥분했다"는 식으로 표현할 수 있습니다.
영속성 완료되지 않은 작업은 디스크에 저장되므로 봇을 재시작해도 예약된 메시지가 손실되지 않습니다.
방해 금지 시간 봇이 선제적 메시지를 보내지 않는 시간대(예: 23-7)를 정의할 수 있습니다.
TTS 통합 AstrBot에 TTS 서비스가 구성되어 있으면 플러그인이 음성 메시지(선택적으로 텍스트도)를 보낼 수 있습니다.
분할 응답 긴 응답을 여러 개의 짧은 메시지로 분할하고 실제 타이핑 간격을 넣을 수 있습니다.
웹 UI 버전 1.2.0부터 플러그인에는 상태, 대기 중인 작업, 알림, 문서를 표시하고 코드를 수정하지 않고 설정을 편집할 수 있는 내장 WebUI가 포함되어 있습니다.

실행 방법

  1. 설치 – AstrBot 플러그인 마켓 또는 저장소의 Release 페이지에서 ZIP을 다운로드하고 AstrBot WebUI(➕ → 파일에서)를 통해 추가합니다.
  2. 의존성 – 필요한 패키지 대부분은 AstrBot에 이미 포함되어 있습니다. 필요한 경우 실행하세요:
    pip install fastapi uvicorn
    # Python <3.11의 경우
    pip install "tomli>=2.0; python_version < '3.11'"
    
  3. 재시작 (선택 사항) – 플러그인이 표시되지 않으면 AstrBot을 다시 시작하세요.
  4. 구성 – 플러그인의 구성 페이지(또는 해당 WebUI)를 열고:
    • 봇이 모니터링할 각 대화의 UMO를 추가하세요(해당 채팅에서 /sid를 보내 얻습니다).
    • 선제적 프롬프트, 타이밍 설정, 방해 금지 시간 등을 입력하세요.
  5. 저장 – 봇이 이제 나열된 세션을 감시하고 일정에 따라 선제적 메시지를 보냅니다.

대화 식별자(UMO) 가져오기

  • 대상 채팅에서 /sid(또는 사용자 정의 웨이크 워드)를 보냅니다.
  • 봇이 다음과 같이 응답합니다:
    UMO: 「default:GroupMessage:123456789」
    UID: 「987654321」
    
  • default: 뒤에 따옴표 안의 부분을 복사합니다(예: default:GroupMessage:123456789)하여 플러그인의 세션 목록에 붙여넣습니다.

플랫폼 지원

이 플러그인은 AstrBot이 主動消息(선제적 메시지)를 보낼 수 있는 모든 곳에서 작동합니다. 테스트된 플랫폼은 다음과 같습니다:

  • QQ 공식 봇(WebSocket 및 Webhook)
  • OneBot v11(개인 QQ)
  • Feishu, DingTalk, Telegram, KOOK 및 README에 나열된 기타. 테스트되지 않은 플랫폼에는 물음표가 표시됩니다. 이론적으로는 작동해야 하지만 커뮤니티 피드백이 필요합니다.

알려진 제한 사항(최신 릴리스 기준)

  • 선제적 응답의 품질은 제공하는 프롬프트와 기본 LLM에 크게 의존합니다. 프롬프트가 좋지 않으면 "캐릭터에서 벗어난" 메시지가 생성될 수 있습니다.
  • 일부 플랫폼에서는 추가 구성이 필요할 수 있습니다(예: 기업용 WeChat은 웹훅 URL 필요).
  • 시작 시 자동 트리거는 선택 사항이며 수동으로 작업을 생성하려는 경우 비활성화할 수 있습니다.
  • 매우 긴 응답은 기본적으로 분할되지 않습니다. 분할 응답 옵션을 활성화해야 합니다.

추가 정보

  • 전체 문서는 저장소(README_EN.md, README_JP.md, 및 docs/ 폴더)에 있으며 플러그인의 WebUI에서 직접 볼 수 있습니다.
  • 작성자 메모에는 코드가 LLM의 도움으로 생성되었다고 설명되어 있습니다. 저장소는 정기적으로 유지 관리되고 업데이트됩니다.
  • 커뮤니티 토론은 QQ 그룹 1033089808에서 이루어집니다(배지에 링크됨).

위의 모든 세부 사항은 프로젝트의 README에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트