目标
- 通过简单的逻辑和实现方式来配置表情的延迟和带图的回复模式,有效增加bot发送表情包时的拟人感。
- 以及有效防止各种情境下的刷屏
是否启用延迟发表情(仅对非“回复带图”场景生效)
enable_delayed_dispatch: true
消息分类策略
可以设计一组互斥的概率策略参数,支持三种模式:
-
auto(默认)
不设置概率
- 短消息:100% inline
- 长消息:100% 延迟表情
-
global_probability(统一概率)
所有消息统一概率触发表情
-
separate_probability(长短消息分别概率)
分别配置短消息与长消息概率
下面是一份结构清晰且兼容当前配置的示例:
emotion_dispatch:
# =========================
# 概率策略
# =========================
# auto | global | separate
# auto:
# 短消息 100% 带图
# 长消息 100% 不带图
#
# global:
# 所有消息统一概率
#
# separate:
# 分别设置短消息和长消息概率
probability_mode: auto
# =========================
# 统一概率模式
# =========================
# 仅在 probability_mode = global 时生效
# 表情触发概率 (0.0 - 1.0)
emotion_probability: 0.35
# =========================
# 分离概率模式
# =========================
# 仅在 probability_mode = separate 时生效
# 短消息带图概率
short_message_probability: 0.9
# 长消息带图概率
long_message_probability: 0.25
逻辑:
if probability_mode == "auto":
if short_message:
send_emotion = True
else:
send_emotion = False
elif probability_mode == "global":
send_emotion = random() < emotion_probability
elif probability_mode == "separate":
if short_message:
send_emotion = random() < short_message_probability
else:
send_emotion = random() < long_message_probability
延迟计算参数
# 基础延迟
base_delay_ms: 900
# 每个字符增加的延迟
# 用于模拟用户的阅读速度,读完再发个表情
delay_per_char_ms: 10ms
# 最小延迟限制/最大延迟限制
min_delay_ms: 700 / max_delay_ms: 3500
# 随机扰动范围 最终延迟会增加 [-jitter, +jitter] 的随机值
delay_jitter_ms: 300
防刷屏控制
表情发送冷却时间
在该时间内不会再次发送表情
可以缓解因为群聊与bot聊天消息较少、所以设置的触发概率较高、但又避免某个时间段连续发很多表情的情况。
防抖机制
如果延迟期间用户再次 @bot
是否取消本次待发送表情
cancel_on_user_followup: true
监听用户追问的时间窗口
此项配置在群内多个人@bot时能有效防止表情包刷屏
在此时间内Bot被其他用户@取消发送表情包,改为下一次必定触发。
cancel_on_user_followup_delay_ms: 1000
目标
是否启用延迟发表情(仅对非“回复带图”场景生效)
消息分类策略
可以设计一组互斥的概率策略参数,支持三种模式:
auto(默认)
不设置概率
global_probability(统一概率)
所有消息统一概率触发表情
separate_probability(长短消息分别概率)
分别配置短消息与长消息概率
下面是一份结构清晰且兼容当前配置的示例:
逻辑:
延迟计算参数
防刷屏控制
表情发送冷却时间
在该时间内不会再次发送表情
可以缓解因为群聊与bot聊天消息较少、所以设置的触发概率较高、但又避免某个时间段连续发很多表情的情况。
防抖机制
如果延迟期间用户再次 @bot
是否取消本次待发送表情
监听用户追问的时间窗口
此项配置在群内多个人@bot时能有效防止表情包刷屏
在此时间内Bot被其他用户@取消发送表情包,改为下一次必定触发。