Skip to content

sticker_service - AI 表情包服务

字数
683 字
阅读时间
3 分钟

概述

表情包服务根据角色当前心情(mood)自动匹配对应的二次元表情包图片/GIF,通过 nekos.best 免费 API 获取随机图片。

text
AI 回复生成
  → 读取角色当前 mood
  → 匹配 nekos.best endpoint(happy/cry/angry/blush 等)
  → 请求 nekos.best API 获取随机图片
  → 附加到回复消息中

架构

核心文件

文件职责
nbot/services/sticker_service.py表情包服务主模块,心情→endpoint 映射、API 请求、发送逻辑

配置来源(优先级从高到低)

优先级来源配置项
1data/settings.jsonfeatures.sticker(开关)、features.sticker_probability(概率)
2环境变量NBOT_STICKER_ENABLEDNBOT_STICKER_PROBABILITY
3内置默认值默认关闭,概率 0.3

心情映射

表情包服务将角色的中文心情映射到 nekos.best 的 API endpoint:

积极情绪

心情endpoint说明
开心、快乐、高兴、幸福、黏人happy开心类
得意、放松、微笑、平静、期待smile微笑类
laugh大笑

消极情绪

心情endpoint说明
生气、愤怒angry生气
委屈、伤心、难过、哭、受伤cry哭泣
沉默pout噘嘴
不安、害怕、紧张shocked震惊

社交情绪

心情endpoint说明
害羞、脸红、感动、依赖blush脸红
尴尬、无语facepalm扶额

未匹配的心情

如果角色当前心情不在映射表中,服务会随机选择一个 endpoint。

使用方式

自动发送

当 AI 角色回复消息时,如果表情包功能开启且命中概率,系统会自动附带一张匹配当前心情的表情包图片。

Web 后台配置

在 Web 后台的 功能开关 页面,找到"表情包"开关:

  • 开启/关闭 — 控制是否在回复中附带表情包
  • 概率 — 0~1 之间的浮点数,控制每条回复附带表情包的概率(默认 0.3,即 30%)

环境变量配置

bash
# 启用表情包功能
NBOT_STICKER_ENABLED=true

# 设置发送概率(0~1)
NBOT_STICKER_PROBABILITY=0.3

settings.json 配置

json
{
  "features": {
    "sticker": true,
    "sticker_probability": 0.3
  }
}

API 说明

nekos.best API

  • Base URL: https://nekos.best/api/v2
  • Endpoint: /{category}(如 /happy/cry/angry
  • 方法: GET
  • 返回: JSON,包含图片 URL
json
// GET https://nekos.best/api/v2/happy
{
  "results": [
    {
      "url": "https://nekos.best/api/v2/happy/xxx.png",
      "artist_name": "...",
      "source_url": "..."
    }
  ]
}

相关页面

页面历史