配置指南
Embykeeper 需要输入一个 toml
格式的配置文件, 默认为 config.toml
.
当首次运行时, 一个模板 config.toml
文件将被生成, 可以轻松编辑 (您也可以从这里下载).
请您根据模板文件中的注释 (以#
开头), 配置您的账户信息.
您也可以使用最小配置, 例如:
[[telegram.account]]
phone = "+8612109347899"
[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
只进行 Telegram 机器人签到的配置
您可以只使用 telegram
标签:
[[telegram.account]]
phone = "+8612109347899"
只进行 Emby / Jellyfin 模拟观看的配置
您可以只使用 emby
标签:
[[emby.account]]
url = "https://weiss-griffin.com:443"
username = "carrie19"
password = "s*D7MMCpS$"
使用 Subsonic / Navidrome 服务器
类似地, 每个账户需要增加一个 subsonic
条目:
[[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
使用多个账号的配置
您可以使用多个 telegram
或 emby
标签来定义多个账户:
[[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"
连接代理的配置
若您需要连接代理, 还需要增加代理配置:
[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$"
使用群组监控和自动水群的配置
若您是 👑 高级用户 并希望开启 👀 群组监控 与 💬 自动水群 功能, 请调节 monitor
和 send
选项:
[[telegram.account]]
phone = "+8612109347899"
monitor = true # 开启群组监控
messager = true # 开启自动水群
仅开启某些站点的配置
你可以仅开启某些站点的 签到 (checkiner
) / 监控 (monitor
) / 水群 (messager
).
请按格式填入🎬 支持的站点:
[site]
checkiner = ["charon", "embyhub", "jms", "judog", "ljyy", "magic", "peach", "pornemby", "sssq", "temby", "terminus"] # 自定义多个签到站点
monitor = ["bgk"] # 仅开启一个监控站点
# messager 将保持默认值
[[telegram.account]]
phone = "+8612109347899"
你也可以在默认站点基础上增加或删除站点:
[site]
checkiner = ["all", "-peach"] # 在全部可用站点基础上删除某些站点
monitor = ["+bgk", "-future"] # 在默认启用站点基础上增加或删除某些站点
messager = ["pornemby"] # 仅开启一个站点
[[telegram.account]]
phone = "+8612109347899"
更多配置
更多配置项详见 🔧 配置文件.
更多配置项详见模板文件注释及下文详细说明.
配置项目
顶级项目
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
mongodb | str | MongoDB 连接字符串 | (不使用) |
basedir | str | 基础目录路径 | (使用用户目录) |
proxy | dict | 代理设置子项 | |
emby | dict | Emby 相关配置子项 | |
subsonic | dict | Subsonic 相关配置子项 | |
checkiner | dict | Telegram 机器人签到相关配置子项 | |
monitor | dict | Telegram 群组监控相关配置子项 | |
messager | dict | Telegram 自动水群相关配置子项 | |
telegram | dict | Telegram 账号子项 | |
notifier | dict /bool /str /int | 通知设置子项 | |
site | dict | 站点服务配置子项 |
旧版本
一些旧版本配置项仍然支持,但建议使用新的配置方式:
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 字符串例如:
mongodb = "mongodb://username:password@localhost:27017/dbname"
proxy
子项
该子项用于配置用于连接 Telegram 和 Emby 服务器的代理. 默认不使用代理.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
hostname | str | 代理服务器地址 | |
port | int | 代理端口号 | |
scheme | str | 代理协议, 可以为 "socks5 " 或 "http " | |
username | str | 代理服务器认证用户名, 不填不使用认证 | |
password | str | 代理服务器认证密码, 不填不使用认证 |
例如:
[proxy]
hostname = "127.0.0.1"
port = 1080
scheme = "socks5"
telegram.account
子项
该子项用于配置一个或多个 Telegram 账户.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
phone | str | 带国家区号的账户手机号, 一般为 "+86... " | |
checkiner | bool | 启用机器人签到系列功能 | true |
monitor | bool | 启用群组监控系列功能 | false |
messager | bool | 启用自动水群系列功能 | false |
site | dict | 账号单独的 site 配置, 默认使用全局 | |
checkiner_config | dict | 账号单独的 checkiner 配置, 默认使用全局 | |
api_id | str | 从Telegram 官网申请的 Application ID | |
api_hash | str | 从Telegram 官网申请的 Application Hash | |
enabled | bool | 是否启用该账号 | true |
其中, monitor
和 messager
是各账户的群组监控和自动水群开关, 与命令行参数中的全局开关有差异.
api_id
和 api_hash
不是必填项, 仅当程序出错并提示您需要该参数时, 才需要填入该参数。
site
的配置请详见 service
子项.
例如:
[[telegram.account]]
phone = "+8616401875896"
messager = false # 禁用该账号的自动水群功能 (需要高级账号, 谨慎使用)
monitor = false # 禁用该账号的自动监控功能 (需要高级账号)
[[telegram.account]]
phone = "+8613901234567"
messager = true # 启用该账号的自动水群功能
monitor = true # 启用该账号的自动监控功能
注意
telegram.account
组标题由两个中括号围起.
checkiner
子项
该子项用于配置 Telegram 机器人签到相关参数.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
time_range | str | Telegram 机器人签到时间或时间范围 , 例如:"14:00" /"2:00PM" /"<11:00AM,2:00PM>" /"<11:00,14:00>" | "<11:00AM,11:00PM>" |
timeout | int | Telegram 机器人签到超时 (秒) | 120 |
retries | int | Telegram 机器人签到错误重试次数 | 4 |
concurrency | int | Telegram 机器人签到最大并发 | 1 |
random_start | int | Telegram 机器人签到各站点间时间随机量 (分钟) | 60 |
例如:
[checkiner]
time_range = "<11:00AM,2:00PM>"
timeout = 120
retries = 4
concurrency = 1
random_start = 60
emby
子项
该子项用于配置 Emby 或 Jellyfin 模拟观看自动保活相关参数.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
time_range | str | Emby 保活开始当日时间或时间范围, 例如:"14:00" /"2:00PM" /"<11:00AM,2:00PM>" /"<11:00,14:00>" | "<11:00AM,11:00PM>" |
interval_days | int /str | Emby 保活间隔天数, 或间隔天数范围, 例如:5 /"10" /"<7,12>" | "<7,12>" |
concurrency | int | Emby 保活最大并发 | 1 |
retries | int | Emby 保活错误重试次数 | 4 |
emby.account
子项
该子项用于配置一个或多个 Emby 或 Jellyfin 服务器账户.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
url | str | Emby 服务器地址 一般为 " https://...:443 " 或 "https://...:8096 " | |
username | str | Emby 服务器用户名 | |
password | str | Emby 服务器密码 | |
name | str | 显示名, 以在日志中使用 | |
time | list / int | 模拟观看的随机时间范围, 设为小于0 (time = -1 ) 以仅登陆不观看 (秒) | [300, 600] |
allow_multiple | bool | true : 允许播放多个视频直到达到时间要求 false : 寻找单个时间达标视频进行播放 | true |
allow_stream | bool | true : 允许模拟播放没有时长信息的视频 false : 重选没有时长信息的视频 | false |
device | str | 自定义的设备名称 (默认模拟 iPhone) | |
client | str | 自定义的客户端名 (默认模拟 Fileball/Filebar) | |
client_version | str | 自定义的客户端版本 (默认模拟 Fileball/Filebar) | |
useragent | str | 自定义的用户代理 (默认模拟 Fileball/Filebar) | |
device_id | str | 自定义的设备 ID (默认为机器码) | |
cf_challenge | bool | 允许尝试使用在线服务解析 Cloudflare 验证码 | true |
use_proxy | bool | 是否使用定义的代理 (若存在 proxy ) | true |
play_id | str | 仅播放特定 ID 的视频 | true |
interval_days | int /str | 账号特定的保活间隔天数, 或间隔天数范围 | (使用全局配置) |
time_range | str | 账号特定的保活开始当日时间或时间范围 | (使用全局配置) |
enabled | bool | 是否启用该账号 | true |
例如:
[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
子项
该子项用于配置签到/水群/监视功能启用的站点.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
checkiner | list | 启用的签到站点 | (当前默认启用的站点) |
monitor | list | 启用的监视站点 | (当前默认启用的站点) |
messager | list | 启用的水群站点 | (当前默认启用的站点) |
例如:
[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
中的一个或几个, 其他未设定的将保持默认:
[site]
checkiner = ["charon", "embyhub", "jms", "ljyy", "magic", "peach", "pornemby", "sssq", "terminus"]
# (其他的将保持默认)
当前支持的站点请见 🎬 支持的站点.
站点尚未被支持时使用模板创建
如果您需要签到站点尚未被支持, 但是符合以下通用模板格式, 即可通过模板创建:
使用 Sakura_embyboss 部署的机器人 (templ_a
)
支持类似于该图模式的机器人:
可以使用 templ_a<xxx>
格式启用, xxx
为机器人的用户名, 如:
[site]
checkiner = ["templ_a<moumou_bot>"]
自定义签到, 支持识别输入式验证码 (templ_b
)
可以使用 templ_b<xxx>
格式启用, xxx
为机器人的用户名.
例如:
[site]
checkiner = ["templ_b<moumou_bot>"]
[checkiner.'templ_b<moumou_bot>']
name = "某某站点"
bot_checkin_cmd = "/sign"
bot_success_keywords = "签到结果"
这将在设定时间向某某站点机器人 (用户名为 @moumou_bot
) 发送 "/sign" 并等待机器人返回带有 "签到结果" 的消息.
可使用的设置项包括:
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
name | str | 签到器显示名称 | |
is_chat | bool | 指定的用户名为群组用户名或 ID, 而非机器人 | false |
bot_checkin_cmd | str /list | 发送的签到命令, 提供列表用于群组签到时将随机选择一条 | "/checkin" |
bot_send_interval | int | 签到命令间等待的秒数 | 3 |
wait_response | bool | 是否需要等待相关回复, 以确认签到完成 | true |
bot_use_captcha | bool | 当 Bot 返回图片时, 识别验证码并处理 | true |
bot_checkin_caption_pat | str | 当 Bot 返回图片时, 仅当符合该 Regex 才识别为验证码 | (不限制) |
bot_text_ignore | str /list | 当含有列表中的关键词, 即忽略该消息 | [] |
ocr | str | OCR 模型名称, 置空使用默认模型 | (默认模型) |
bot_captcha_char_range | str | OCR 字符范围, 仅当默认模型可用 | (默认范围) |
bot_captcha_len | int /list | 验证码长度的可能范围, 例如 [1, 2, 3] | [] |
bot_success_pat | str | 当接收到成功消息后, 从消息中提取数字的 Regex 模式, 只能含有 1~2 个捕获区 | "(\d+)[^\d]*(\d+)" |
bot_retry_wait | int | 失败时等待的秒数 | 2 |
bot_use_history | int | 首先尝试识别历史记录中最后一个验证码图片, 最多识别 N 条 | (禁用) |
bot_allow_from_scratch | bool | 允许从未聊天情况下启动 | false |
bot_success_keywords | str /list | 成功时检测的关键词 | (使用内置) |
bot_checked_keywords | str /list | 今日已签到时检测的关键词 | (使用内置) |
bot_account_fail_keywords | str /list | 账户错误将退出时检测的关键词 | (使用内置) |
bot_too_many_tries_fail_keywords | str /list | 过多尝试将退出时检测的关键词 | (使用内置) |
bot_fail_keywords | str /list | 签到错误将重试时检测的关键词 | (使用内置) |
max_retries | int | 验证码错误或网络错误时最高重试次数 | (根据全局设置) |
checked_retries | int | 今日已签到时最高重试次数 | (不重试) |
使用 Sakura_embyboss 部署的机器人定时尝试注册 (templ_c
)
可以使用 templ_c<xxx>
格式启用, xxx
为机器人的用户名.
[site]
checkiner = ["templ_c<moumou_bot>"]
[checkiner.'templ_c<moumou_bot>']
interval = 6000
这将在某某站点 (机器人用户名为 @moumou_bot
) 每 6000 秒尝试使用 /start
获取一次开注情况, 如开注则注册.
如果您希望监控的站点尚未被支持, 可通过模板创建:
自定义监控, 识别到对应消息后向 Telegram 发送通知或自动发送信息 (templ_a
)
您需要先增加一个站点:
[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 账号发送消息.
或者你可以开启自定义的回复:
[site]
monitor = ["templ_a<example_site>"]
[monitor.'templ_a<all_site_lottery>']
name = "所有站点"
chat_keyword = "参与关键词:「(.*?)」"
send_immediately = true
chat_reply = "$1"
这将在某某站点 (用户名为 @moumou_chat
) 中有任意用户发送 "开注啦" 时立刻向设置的 Telegram 账号发送消息.
可使用的设置项包括:
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
name | str | 监控器显示名称 | |
chat_name | str /int | 监控的群聊 (支持用户名 / ID) | |
chat_allow_outgoing | bool | 是否支持自己发言触发 | false |
chat_user | str /list | 仅被列表中用户的发言触发 (支持用户名 / ID) | [] |
chat_keyword | str /list | 仅当消息含有列表中的关键词时触发, 支持 Regex | [] |
chat_except_keyword | str /list | 消息含有列表中的关键词时不触发, 支持 Regex | [] |
send | bool | 是否推送消息 | true |
send_immediately | bool | 是否发送即时日志, 不等待每日推送时间 | true |
try_register_bot | str | 尝试在机器人处注册 (需要为 berry8838/Sakura_embyboss 项目部署的机器人) | (不注册) |
chat_reply | str | 自动回复监控到信息的内容 | (不回复) |
chat_probability | float | 每次回复的随机概率 (0最低, 1最高) | 1.0 |
chat_delay | int | 回复发信延迟 (秒) | 0 |
chat_follow_user | int | 需要等待 N 个用户发送 chat_reply 方可回复 | 0 |
trigger_interval | float | 每次触发的最低时间间隔 (秒) | 2 |
trigger_sim | int | 同时触发的最大并行处理数 | 1 |
trigger_max_time | float | 触发后处理的最长时间 (秒) | 120 |
allow_edit | bool | 对于编辑后消息的内容也触发 | false |
allow_caption | bool | 是否允许带照片的消息 | true |
allow_text | bool | 是否允许不带照片的消息 | true |
站点合集的缩写
可以使用 all
表示全部, sgk
表示全部社工库签到器:
[site]
checkiner = ["sgk"] // 仅开启社工库签到器
[site]
checkiner = ["all"] // 开启全部支持的签到器 (实际仅会签到曾经启用过机器人的站点)
[site]
monitor = ["all"] // 开启全部支持的监控器 (实际仅会签到曾经启用过机器人的站点)
使用默认站点配置时, 增加或禁用部分站点
如果你需要禁用一个或多个站点, 请使用减号表示删除:
[site]
checkiner = ["-charon"] # 开启默认的签到器, 除了 charon
也可以自由组合:
[site]
checkiner = ["all", "-charon"] # 开启所有的签到器, 除了 charon
如果你需要增加一个或多个站点, 请使用加号表示额外增加.
[site]
checkiner = ["+charon"] # 开启默认的签到器, 加上 charon
提示
请注意与不使用加号的差异:
[site]
checkiner = ["charon"] # 仅开启 charon 签到器
不同 Telegram 账号使用不同的 site
服务配置
您可以使用 [telegram.account.site]
条目在每个账号下方设置特定于这个账号的 site
服务配置.
请注意相关设置必须在 [[telegram.account]]
下方第一个.
[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
子项
该子项用于配置通知相关参数.
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
enabled | bool | 启用签到/保活结果的日志推送 | false |
account | str /int | 使用第几个 Telegram 账号进行推送, 从 1 开始计数 | 1 |
immediately | bool | 默认情况下, 日志推送将在每天指定时间统一推送 (在 @embykeeper_bot 设置), 设置为 false 以立刻推送 | false |
once | bool | 默认情况下, 启动时立刻执行的一次签到/保活不会推送消息, 设置为 true 以推送 | false |
例如:
[notifier]
enabled = true
account = 1
immediately = false
once = false
subsonic
子项
该子项用于配置一个或多个 Subsonic 服务器账户。
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
time_range | str | Subsonic 保活开始当日时间或时间范围, 例如:"14:00" /"2:00PM" /"<11:00AM,2:00PM>" /"<11:00,14:00>" | "<11:00AM,11:00PM>" |
interval_days | int /str | Subsonic 保活间隔天数, 或间隔天数范围, 例如:5 /"10" /"<7,12>" | "<7,12>" |
concurrency | int | Subsonic 保活最大并发 | 3 |
subsonic.account
子项
在 account
列表中配置具体的账户信息:
设置项 | 值类型 | 简介 | 默认值 |
---|---|---|---|
url | str | Subsonic 服务器地址 一般为 " https://... " | |
username | str | Subsonic 服务器用户名 | |
password | str | Subsonic 服务器密码 | |
name | str | 显示名, 以在日志中使用 | |
time | list / int | 模拟播放的随机时间范围, 设为小于0 (time = -1 ) 以仅登陆不播放 (秒) | [120, 240] |
client | str | 自定义的客户端名 (默认模拟音流) | |
version | str | 自定义的客户端名 (默认模拟音流) | |
useragent | str | 自定义的用户代理 (默认模拟音流) | |
use_proxy | bool | 是否使用定义的代理 (若存在 proxy ) | true |
interval_days | int /str | 账号特定的保活间隔天数, 或间隔天数范围 | (使用全局配置) |
time_range | str | 账号特定的保活开始当日时间或时间范围 | (使用全局配置) |
enabled | bool | 是否启用该账号 | true |
例如:
[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] # 模拟收听的时长 (秒)
其他的特定站点配置子项
如果您需要在自动抢注时自定义用户名, 您需要在配置文件末尾追加:
[monitor.bgk] # 支持 bgk, embyhub, future, infinity_fly, judog, misty, polo, viper
unique_name = "your_username_for_registeration" # 自动抢注时使用的用户名
如果您需要在 Pornemby
自动回答问题时, 仅当问题历史中找到答案时自动回答, 保证百分百准确率, 您需要在配置文件末尾追加:
[monitor.pornemby_answer]
only_history = true # 仅当问题历史中找到答案时自动回答
如果您需要在 Pornemby
自动回答问题时, 一定概率不回答, 您需要在配置文件末尾追加:
[monitor.pornemby_answer]
possibility = 0.7 # 70% 概率回答, 30% 概率不回答
如果您需要在 Pornemby
抢龙王雨红包时, 一定概率不抢, 您需要在配置文件末尾追加:
[monitor.pornemby_dragon_rain]
possibility = 0.3 # 30% 概率抢, 70% 概率不抢
如果您需要在 Pornemby
自动水群时, 自定义条数, 您需要在配置文件末尾追加:
[messager.pornemby]
messages = ["pornemby-common-wl@latest.yaml * 100"] # 每天发送 100 条消息
interval = 1800 # 两次水群之间最小间隔 (s)
对于 Pornemby
智能水群 (smart_pornemby
), 您需要在配置文件末尾追加:
[messager.smart_pornemby]
msg_per_day = 100 # 每天发送 100 条消息
interval = 1800 # 两次水群之间最小间隔 (s)
您也可以自定义提示词, 例如在默认提示词外增加提示词:
[messager.smart_pornemby]
extra_prompt = "请勿输出数字"
您也可以完全重写提示词:
[messager.smart_pornemby]
prompt = "xxxx"
INFO
对于基于模板创建的站点 (例如 templ_a<abcbot>
), 您需要加上引号:
[monitor.'templ_a<abc_chat>']
name = "ABC 自定义群组监控"