Skip to content

配置指南

Embykeeper 需要输入一个 toml 格式的配置文件, 默认为 config.toml.

当首次运行时, 一个模板 config.toml 文件将被生成, 可以轻松编辑 (您也可以从这里下载).

请您根据模板文件中的注释 (以#开头), 配置您的账户信息.

您也可以使用最小配置, 例如:

toml
[[telegram.account]]
phone = "+8612109347899"

[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
只进行 Telegram 机器人签到的配置

您可以只使用 telegram 标签:

toml
[[telegram.account]]
phone = "+8612109347899"
只进行 Emby / Jellyfin 模拟观看的配置

您可以只使用 emby 标签:

toml
[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
使用 Subsonic / Navidrome 服务器

类似地, 每个账户需要增加一个 subsonic 条目:

toml
[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"

[[subsonic.account]]  
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
time = 10
使用多个账号的配置

您可以使用多个 telegramemby 标签来定义多个账户:

toml
[[telegram.account]]
phone = "+8618323433500"

[[telegram.account]]
phone = "+8615635499568"

[[emby.account]]
url = "https://jensen.biz/"
username = "nbernard"
password = "*%NO1K^tr#"

[[emby.account]]
url = "https://barnett.org/"
username = "danielmartin"
password = "2!8Mn9tpRT"
连接代理的配置

若您需要连接代理, 还需要增加代理配置:

toml
[proxy] 
hostname = "127.0.0.1"
port = 1080
scheme = "socks5"

[[telegram.account]]
phone = "+8612109347899"

[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
使用群组监控和自动水群的配置

若您是 👑 高级用户 并希望开启 👀 群组监控💬 自动水群 功能, 请调节 monitorsend 选项:

toml
[[telegram.account]]
phone = "+8612109347899"
monitor = true # 开启群组监控
messager = true # 开启自动水群
仅开启某些站点的配置

你可以仅开启某些站点的 签到 (checkiner) / 监控 (monitor) / 水群 (messager).

请按格式填入🎬 支持的站点:

toml
[site]
checkiner = ["charon", "embyhub", "jms", "judog", "ljyy", "magic", "peach", "pornemby", "sssq", "temby", "terminus"] # 自定义多个签到站点
monitor = ["bgk"] # 仅开启一个监控站点
# messager 将保持默认值

[[telegram.account]]
phone = "+8612109347899"

你也可以在默认站点基础上增加或删除站点:

toml
[site]
checkiner = ["all", "-peach"] # 在全部可用站点基础上删除某些站点
monitor = ["+bgk", "-future"] # 在默认启用站点基础上增加或删除某些站点
messager = ["pornemby"] # 仅开启一个站点

[[telegram.account]]
phone = "+8612109347899"

更多配置

更多配置项详见 🔧 配置文件.

更多配置项详见模板文件注释及下文详细说明.

配置项目

顶级项目

设置项值类型简介默认值
mongodbstrMongoDB 连接字符串(不使用)
basedirstr基础目录路径(使用用户目录)
proxydict代理设置子项
embydictEmby 相关配置子项
subsonicdictSubsonic 相关配置子项
checkinerdictTelegram 机器人签到相关配置子项
monitordictTelegram 群组监控相关配置子项
messagerdictTelegram 自动水群相关配置子项
telegramdictTelegram 账号子项
notifierdict/bool/str/int通知设置子项
sitedict站点服务配置子项

旧版本

一些旧版本配置项仍然支持,但建议使用新的配置方式:

  • time -> checkiner.time_range
  • timeout -> checkiner.timeout
  • retries -> checkiner.retries
  • concurrent -> checkiner.concurrency
  • random -> checkiner.random_start
  • watch_concurrent -> emby.concurrency
  • listen_concurrent -> subsonic.concurrency
  • watchtime -> emby.time_range
  • listentime -> subsonic.time_range
  • interval -> emby.interval_days/subsonic.interval_days
  • notify_immediately -> notifier.immediately
  • service -> site

提示

不使用 MongoDB 时, 默认使用 JSON 存储缓存.

MongoDB 字符串例如:

toml
mongodb = "mongodb://username:password@localhost:27017/dbname"

proxy 子项

该子项用于配置用于连接 Telegram 和 Emby 服务器的代理. 默认不使用代理.

设置项值类型简介默认值
hostnamestr代理服务器地址
portint代理端口号
schemestr代理协议, 可以为 "socks5" 或 "http"
usernamestr代理服务器认证用户名, 不填不使用认证
passwordstr代理服务器认证密码, 不填不使用认证

例如:

toml
[proxy]
hostname = "127.0.0.1"
port = 1080
scheme = "socks5"

telegram.account 子项

该子项用于配置一个或多个 Telegram 账户.

设置项值类型简介默认值
phonestr带国家区号的账户手机号, 一般为 "+86..."
checkinerbool启用机器人签到系列功能true
monitorbool启用群组监控系列功能false
messagerbool启用自动水群系列功能false
sitedict账号单独的 site 配置, 默认使用全局
checkiner_configdict账号单独的 checkiner 配置, 默认使用全局
api_idstrTelegram 官网申请的 Application ID
api_hashstrTelegram 官网申请的 Application Hash
enabledbool是否启用该账号true

其中, monitormessager 是各账户的群组监控和自动水群开关, 与命令行参数中的全局开关有差异.

api_idapi_hash 不是必填项, 仅当程序出错并提示您需要该参数时, 才需要填入该参数。

site 的配置请详见 service 子项.

例如:

toml
[[telegram.account]]
phone = "+8616401875896"
messager = false # 禁用该账号的自动水群功能 (需要高级账号, 谨慎使用)
monitor = false # 禁用该账号的自动监控功能 (需要高级账号)

[[telegram.account]]
phone = "+8613901234567"
messager = true # 启用该账号的自动水群功能
monitor = true # 启用该账号的自动监控功能

注意

telegram.account 组标题由两个中括号围起.

checkiner 子项

该子项用于配置 Telegram 机器人签到相关参数.

设置项值类型简介默认值
time_rangestrTelegram 机器人签到时间或时间范围 , 例如:
"14:00" /
"2:00PM" /
"<11:00AM,2:00PM>" /
"<11:00,14:00>"
"<11:00AM,11:00PM>"
timeoutintTelegram 机器人签到超时 (秒)120
retriesintTelegram 机器人签到错误重试次数4
concurrencyintTelegram 机器人签到最大并发1
random_startintTelegram 机器人签到各站点间时间随机量 (分钟)60

例如:

toml
[checkiner]
time_range = "<11:00AM,2:00PM>"
timeout = 120
retries = 4
concurrency = 1
random_start = 60

emby 子项

该子项用于配置 Emby 或 Jellyfin 模拟观看自动保活相关参数.

设置项值类型简介默认值
time_rangestrEmby 保活开始当日时间或时间范围, 例如:
"14:00" /
"2:00PM" /
"<11:00AM,2:00PM>" /
"<11:00,14:00>"
"<11:00AM,11:00PM>"
interval_daysint/strEmby 保活间隔天数, 或间隔天数范围, 例如:
5 /
"10" /
"<7,12>"
"<7,12>"
concurrencyintEmby 保活最大并发1
retriesintEmby 保活错误重试次数4

emby.account 子项

该子项用于配置一个或多个 Emby 或 Jellyfin 服务器账户.

设置项值类型简介默认值
urlstrEmby 服务器地址
一般为 "https://...:443" 或 "https://...:8096"
usernamestrEmby 服务器用户名
passwordstrEmby 服务器密码
namestr显示名, 以在日志中使用
timelist / int模拟观看的随机时间范围, 设为小于0 (time = -1) 以仅登陆不观看 (秒)[300, 600]
allow_multiplebooltrue: 允许播放多个视频直到达到时间要求
false: 寻找单个时间达标视频进行播放
true
allow_streambooltrue: 允许模拟播放没有时长信息的视频
false: 重选没有时长信息的视频
false
devicestr自定义的设备名称 (默认模拟 iPhone)
clientstr自定义的客户端名 (默认模拟 Fileball/Filebar)
client_versionstr自定义的客户端版本 (默认模拟 Fileball/Filebar)
useragentstr自定义的用户代理 (默认模拟 Fileball/Filebar)
device_idstr自定义的设备 ID (默认为机器码)
cf_challengebool允许尝试使用在线服务解析 Cloudflare 验证码true
use_proxybool是否使用定义的代理 (若存在 proxy)true
play_idstr仅播放特定 ID 的视频true
interval_daysint/str账号特定的保活间隔天数, 或间隔天数范围(使用全局配置)
time_rangestr账号特定的保活开始当日时间或时间范围(使用全局配置)
enabledbool是否启用该账号true

例如:

toml
[emby]
time_range = "<11:00AM,2:00PM>"
interval_days = "<7,12>"
concurrency = 3

[[emby.account]]
url = "https://emby.example.com"
username = "user"
password = "pass"
time = [300, 600]

注意

emby 组标题由一个中括号围起.

emby.account 组标题由两个中括号围起.

注意

请了解原理再更改 device / client / client_version / useragent / device_id.

这些设置的默认值均是通过抓包常用的播放软件获得的, 仅更改其中一些, 容易被识别. 同时, 默认设置的请求方式是针对于 Fileball/Filebar 调制的, 更改模拟的客户端可能会被识别.

注意

设置 play_id 后, 只会播放该视频 (如果视频长度低于所需要求会反复播放).

play_id 可以通过视频页面的 URL 获得:

https://example.com/web/#/details?id=123abcdefg123&serverId=456hijklmn456

play_id 应该被设置为 123abcdefg123.

site 子项

该子项用于配置签到/水群/监视功能启用的站点.

设置项值类型简介默认值
checkinerlist启用的签到站点(当前默认启用的站点)
monitorlist启用的监视站点(当前默认启用的站点)
messagerlist启用的水群站点(当前默认启用的站点)

例如:

toml
[site]
checkiner = ["charon", "embyhub", "jms", "ljyy", "magic", "peach", "pornemby", "sssq", "terminus"]
monitor = ["bgk", "embyhub", "pornemby_answer", "pornemby_double", "pornemby_dragon_rain", "pornemby_nohp", "viper"]
messager = ["pornemby"]

提示

可以仅指定 checkiner, monitor, messager 中的一个或几个, 其他未设定的将保持默认:

toml
[site]
checkiner = ["charon", "embyhub", "jms", "ljyy", "magic", "peach", "pornemby", "sssq", "terminus"]
# (其他的将保持默认)

当前支持的站点请见 🎬 支持的站点.

站点尚未被支持时使用模板创建

如果您需要签到站点尚未被支持, 但是符合以下通用模板格式, 即可通过模板创建:

使用 Sakura_embyboss 部署的机器人 (templ_a)

支持类似于该图模式的机器人:

templ_a

可以使用 templ_a<xxx> 格式启用, xxx 为机器人的用户名, 如:

toml
[site]
checkiner = ["templ_a<moumou_bot>"]
自定义签到, 支持识别输入式验证码 (templ_b)

可以使用 templ_b<xxx> 格式启用, xxx 为机器人的用户名.

例如:

toml
[site]
checkiner = ["templ_b<moumou_bot>"]

[checkiner.'templ_b<moumou_bot>']
name = "某某站点"
bot_checkin_cmd = "/sign"
bot_success_keywords = "签到结果"

这将在设定时间向某某站点机器人 (用户名为 @moumou_bot) 发送 "/sign" 并等待机器人返回带有 "签到结果" 的消息.

可使用的设置项包括:

设置项值类型简介默认值
namestr签到器显示名称
is_chatbool指定的用户名为群组用户名或 ID, 而非机器人false
bot_checkin_cmdstr/list发送的签到命令, 提供列表用于群组签到时将随机选择一条"/checkin"
bot_send_intervalint签到命令间等待的秒数3
wait_responsebool是否需要等待相关回复, 以确认签到完成true
bot_use_captchabool当 Bot 返回图片时, 识别验证码并处理true
bot_checkin_caption_patstr当 Bot 返回图片时, 仅当符合该 Regex 才识别为验证码(不限制)
bot_text_ignorestr/list当含有列表中的关键词, 即忽略该消息[]
ocrstrOCR 模型名称, 置空使用默认模型(默认模型)
bot_captcha_char_rangestrOCR 字符范围, 仅当默认模型可用(默认范围)
bot_captcha_lenint/list验证码长度的可能范围, 例如 [1, 2, 3][]
bot_success_patstr当接收到成功消息后, 从消息中提取数字的 Regex 模式, 只能含有 1~2 个捕获区"(\d+)[^\d]*(\d+)"
bot_retry_waitint失败时等待的秒数2
bot_use_historyint首先尝试识别历史记录中最后一个验证码图片, 最多识别 N 条(禁用)
bot_allow_from_scratchbool允许从未聊天情况下启动false
bot_success_keywordsstr/list成功时检测的关键词(使用内置)
bot_checked_keywordsstr/list今日已签到时检测的关键词(使用内置)
bot_account_fail_keywordsstr/list账户错误将退出时检测的关键词(使用内置)
bot_too_many_tries_fail_keywordsstr/list过多尝试将退出时检测的关键词(使用内置)
bot_fail_keywordsstr/list签到错误将重试时检测的关键词(使用内置)
max_retriesint验证码错误或网络错误时最高重试次数(根据全局设置)
checked_retriesint今日已签到时最高重试次数(不重试)
使用 Sakura_embyboss 部署的机器人定时尝试注册 (templ_c)

可以使用 templ_c<xxx> 格式启用, xxx 为机器人的用户名.

toml
[site]
checkiner = ["templ_c<moumou_bot>"]

[checkiner.'templ_c<moumou_bot>']
interval = 6000

这将在某某站点 (机器人用户名为 @moumou_bot) 每 6000 秒尝试使用 /start 获取一次开注情况, 如开注则注册.

如果您希望监控的站点尚未被支持, 可通过模板创建:

自定义监控, 识别到对应消息后向 Telegram 发送通知或自动发送信息 (templ_a)

您需要先增加一个站点:

toml
[site]
monitor = ["templ_a<example_site>"]

[monitor.'templ_a<example_site>']
name = "某某站点"
chat_name = "moumou_chat"
chat_keyword = "开注啦"
send_immediately = true
try_register_bot = "moumou_bot"

这将在某某站点 (用户名为 @moumou_chat) 中有任意用户发送 "开注啦" 时立刻向设置的 Telegram 账号发送消息.

或者你可以开启自定义的回复:

toml
[site]
monitor = ["templ_a<example_site>"]

[monitor.'templ_a<all_site_lottery>']
name = "所有站点"
chat_keyword = "参与关键词:「(.*?)」"
send_immediately = true
chat_reply = "$1"

这将在某某站点 (用户名为 @moumou_chat) 中有任意用户发送 "开注啦" 时立刻向设置的 Telegram 账号发送消息.

可使用的设置项包括:

设置项值类型简介默认值
namestr监控器显示名称
chat_namestr/int监控的群聊 (支持用户名 / ID)
chat_allow_outgoingbool是否支持自己发言触发false
chat_userstr/list仅被列表中用户的发言触发 (支持用户名 / ID)[]
chat_keywordstr/list仅当消息含有列表中的关键词时触发, 支持 Regex[]
chat_except_keywordstr/list消息含有列表中的关键词时不触发, 支持 Regex[]
sendbool是否推送消息true
send_immediatelybool是否发送即时日志, 不等待每日推送时间true
try_register_botstr尝试在机器人处注册 (需要为 berry8838/Sakura_embyboss 项目部署的机器人)(不注册)
chat_replystr自动回复监控到信息的内容(不回复)
chat_probabilityfloat每次回复的随机概率 (0最低, 1最高)1.0
chat_delayint回复发信延迟 (秒)0
chat_follow_userint需要等待 N 个用户发送 chat_reply 方可回复0
trigger_intervalfloat每次触发的最低时间间隔 (秒)2
trigger_simint同时触发的最大并行处理数1
trigger_max_timefloat触发后处理的最长时间 (秒)120
allow_editbool对于编辑后消息的内容也触发false
allow_captionbool是否允许带照片的消息true
allow_textbool是否允许不带照片的消息true

站点合集的缩写

可以使用 all 表示全部, sgk 表示全部社工库签到器:

toml
[site]
checkiner = ["sgk"] // 仅开启社工库签到器
toml
[site]
checkiner = ["all"] // 开启全部支持的签到器 (实际仅会签到曾经启用过机器人的站点)
toml
[site]
monitor = ["all"] // 开启全部支持的监控器 (实际仅会签到曾经启用过机器人的站点)

使用默认站点配置时, 增加或禁用部分站点

如果你需要禁用一个或多个站点, 请使用减号表示删除:

toml
[site]
checkiner = ["-charon"] # 开启默认的签到器, 除了 charon

也可以自由组合:

toml
[site]
checkiner = ["all", "-charon"] # 开启所有的签到器, 除了 charon

如果你需要增加一个或多个站点, 请使用加号表示额外增加.

toml
[site]
checkiner = ["+charon"] # 开启默认的签到器, 加上 charon

提示

请注意与不使用加号的差异:

toml
[site]
checkiner = ["charon"] # 仅开启 charon 签到器

不同 Telegram 账号使用不同的 site 服务配置

您可以使用 [telegram.account.site] 条目在每个账号下方设置特定于这个账号的 site 服务配置.

请注意相关设置必须在 [[telegram.account]] 下方第一个.

toml
[site] # 默认使用这里的服务配置
checkiner = ["+charon"] #

[[telegram.account]]
phone = "+86111111111111"

[telegram.account.site] # 对于 "+86111111111111", 使用单独配置
checkiner = ["all"] #

[[telegram.account]]
phone = "+86222222222222"

[telegram.account.site] # 对于 "+86222222222222", 使用单独配置
checkiner = ["terminus"] #

[[telegram.account]] # 对于 "+86333333333333", 使用默认配置
phone = "+86333333333333"

notifier 子项

该子项用于配置通知相关参数.

设置项值类型简介默认值
enabledbool启用签到/保活结果的日志推送false
accountstr/int使用第几个 Telegram 账号进行推送, 从 1 开始计数1
immediatelybool默认情况下, 日志推送将在每天指定时间统一推送 (在 @embykeeper_bot 设置), 设置为 false 以立刻推送false
oncebool默认情况下, 启动时立刻执行的一次签到/保活不会推送消息, 设置为 true 以推送false

例如:

toml
[notifier]
enabled = true
account = 1
immediately = false
once = false

subsonic 子项

该子项用于配置一个或多个 Subsonic 服务器账户。

设置项值类型简介默认值
time_rangestrSubsonic 保活开始当日时间或时间范围, 例如:
"14:00" /
"2:00PM" /
"<11:00AM,2:00PM>" /
"<11:00,14:00>"
"<11:00AM,11:00PM>"
interval_daysint/strSubsonic 保活间隔天数, 或间隔天数范围, 例如:
5 /
"10" /
"<7,12>"
"<7,12>"
concurrencyintSubsonic 保活最大并发3

subsonic.account 子项

account 列表中配置具体的账户信息:

设置项值类型简介默认值
urlstrSubsonic 服务器地址
一般为 "https://..."
usernamestrSubsonic 服务器用户名
passwordstrSubsonic 服务器密码
namestr显示名, 以在日志中使用
timelist / int模拟播放的随机时间范围, 设为小于0 (time = -1) 以仅登陆不播放 (秒)[120, 240]
clientstr自定义的客户端名 (默认模拟音流)
versionstr自定义的客户端名 (默认模拟音流)
useragentstr自定义的用户代理 (默认模拟音流)
use_proxybool是否使用定义的代理 (若存在 proxy)true
interval_daysint/str账号特定的保活间隔天数, 或间隔天数范围(使用全局配置)
time_rangestr账号特定的保活开始当日时间或时间范围(使用全局配置)
enabledbool是否启用该账号true

例如:

toml
[subsonic]
time_range = "<11:00AM,2:00PM>"
interval_days = "<7,12>"
concurrency = 3

[[subsonic.account]]
url = "https://subsonic.example.com/"
username = "user"
password = "pass"
time = [120, 240] # 模拟收听的时长 (秒)

其他的特定站点配置子项

如果您需要在自动抢注时自定义用户名, 您需要在配置文件末尾追加:

toml
[monitor.bgk] # 支持 bgk, embyhub, future, infinity_fly, judog, misty, polo, viper
unique_name = "your_username_for_registeration" # 自动抢注时使用的用户名

如果您需要在 Pornemby 自动回答问题时, 仅当问题历史中找到答案时自动回答, 保证百分百准确率, 您需要在配置文件末尾追加:

toml
[monitor.pornemby_answer]
only_history = true # 仅当问题历史中找到答案时自动回答

如果您需要在 Pornemby 自动回答问题时, 一定概率不回答, 您需要在配置文件末尾追加:

toml
[monitor.pornemby_answer]
possibility = 0.7 # 70% 概率回答, 30% 概率不回答

如果您需要在 Pornemby 抢龙王雨红包时, 一定概率不抢, 您需要在配置文件末尾追加:

toml
[monitor.pornemby_dragon_rain]
possibility = 0.3 # 30% 概率抢, 70% 概率不抢

如果您需要在 Pornemby 自动水群时, 自定义条数, 您需要在配置文件末尾追加:

toml
[messager.pornemby]
messages = ["pornemby-common-wl@latest.yaml * 100"] # 每天发送 100 条消息
interval = 1800 # 两次水群之间最小间隔 (s)

对于 Pornemby 智能水群 (smart_pornemby), 您需要在配置文件末尾追加:

toml
[messager.smart_pornemby]
msg_per_day = 100 # 每天发送 100 条消息
interval = 1800 # 两次水群之间最小间隔 (s)

您也可以自定义提示词, 例如在默认提示词外增加提示词:

toml
[messager.smart_pornemby]
extra_prompt = "请勿输出数字"

您也可以完全重写提示词:

toml
[messager.smart_pornemby]
prompt = "xxxx"

INFO

对于基于模板创建的站点 (例如 templ_a<abcbot>), 您需要加上引号:

toml
[monitor.'templ_a<abc_chat>']
name = "ABC 自定义群组监控"

Released under the GPLv3 License.