Sign inSign up

liveinaus/bemby

By liveinaus

•Updated about 1 hour ago

Self-hosted Telegram check-in and Emby watch session automation with web admin portal

Image
2

10K+

liveinaus/bemby repository overview

Bemby

⁠Bemby Pro

Docker Pulls 更新日志 Telegram

English⁠ | 简体中文

如果 Bemby 为你节省了时间,欢迎在 GitHub 上给它点个 Star,帮助更多人发现这个项目。

一款自托管的自动化工具,用于管理每日 Telegram 机器人签到和 Emby 视频观看会话。内置 Web 管理门户,支持多账号和多任务管理。

⁠Pro 版比开源版 1.0.0 多了什么

开源版停在 v1.0.0(镜像 :latest,2026 年 8 月)。之后的开发都只在 Pro(镜像 :pro)中,主要新增如下;逐条说明见更新日志⁠。

网页与小程序自动化

  • 大量新的网页子步骤 -- 键盘输入、按键(Enter / Ctrl+Enter)、长按与按偏移长按、拖动滑块或拼图、下拉选择、跳转与后退、滚动到元素、读取文字、选取与收集元素、在页面运行脚本
  • 流程控制 -- 条件分支(if / else)、按次数循环、按列表逐个循环(for each)、提前以成功或失败结束任务、把任务移交给另一个模板
  • 变量与 AI 填写 -- 设置变量(含随机占位符)、AI 按提示写入输入框、运行中途发送通知
  • 邮箱与两步验证 -- 从邮件读取验证码或验证链接、从地址池领取邮箱、msOauth2api 邮箱登录、抓取两步验证密钥并计算动态码(TOTP)
  • 通行密钥(Passkey) -- 用虚拟安全密钥注册并保存通行密钥,之后用它登录,无需硬件
  • 图片验证码 -- AI 识别 hCaptcha 一类的选图验证码;AI 可一次点击多个位置;小程序内也能过 Cloudflare Turnstile;支持 iframe 内的页面
  • 实时查看与手动操作浏览器 -- 通过 VNC 实时观看任务中的浏览器,也可以手动打开浏览器操作;浏览器配置文件(Profile)可管理、改名、清理,也可不使用配置文件
  • 回复键盘里的小程序 -- 输入框上方的小程序按钮也能打开,其 sendData 结果会像官方客户端一样转交给机器人
  • 浏览器自检与伪装 -- 选择出口,用 BrowserScan、CreepJS、FingerprintJS 与真实 Cloudflare 验证页给浏览器打分(0–100,附扣分原因);浏览器可伪装为 Windows / macOS / Linux,可上传自己的 Windows / Mac 字体,时区跟随出口 IP 所在城市

数据

  • 数据仓库 -- 以文件夹和记录的形式长期保存数据(注册出的账号、邀请码等),任务中用 {data.文件夹.键} 读取,也可在任务中写入和删除;支持排序、筛选、导入、导出(含明文格式)
  • 按数据文件夹逐条循环 -- 每条记录执行一轮,可跳过已处理的记录,重跑时从上次停下处继续

Telegram 账户

  • 导入卡密(session)账户 -- 批量导入购买的 session 账户,导入前可检查是否存活,之后可批量接管所有权
  • 批量设置隐私、批量提取消息(按关键词和正则从某个聊天中提取内容,可写入数据仓库)
  • 资料批量设置 -- 随机头像(可预先上传头像图库,支持 zip)、用户名(@handle)
  • 分享手机号、账户搜索与筛选、手机号校验、Telegram 头像与用户 ID 列、「轻度限制」识别、手动重新连接

消息页(Messenger)

  • 频道私信、投票与测验(可投票并查看结果)、@提及没有用户名的群成员、群成员搜索、群服务消息、被回复消息的预览与跳转、贴纸显示、按账户记住所选文件夹
  • 升级到 Telegram 第 229 层,可以显示机器人发来的富文本页面消息

任务与调度

  • 一次性任务、所有任务类型都支持「每 X 天运行一次」、任务图标、任务列表筛选
  • 签到更灵活 -- 按文字匹配按钮、多个关键词、优先点击置顶消息中的按钮、从最后一条消息的关键词点击签到按钮
  • 入群验证 -- 用 AI 选择入群验证按钮(可自定义提示),以测验投票形式出的入群题也能作答
  • 批量任务 -- 在后台运行,可暂停、跳过、调整间隔;从模板批量创建任务时可按多种条件筛选账户
  • 单个任务可覆盖代理;在任务列表中直接编辑模板
  • 调度更稳 -- 升级后保持原定时间、卡死的运行会被回收、当天错过的运行当天补上、同时运行上限可调
  • 手动标记成功或失败 -- 更正最近一次运行的结果,或记录一次手动完成,并据此重新安排下次运行

代理

  • 节点订阅(VLESS / VMess / Trojan / Shadowsocks,内置 Xray 核心)、全局代理(适合中国大陆使用)、随机代理池、代理健康检查与测试、自动刷新

Emby 观看

  • 支持更多服务器(包括需要播放会话的网关)、可忽略无效 SSL 证书、可为观看任务单独设置代理

系统

  • 浅色 / 深色主题、版本更新检查、设置中查看系统日志、重启系统、Telegram 连接列表与连接数上限、忘记密码时的重置方式
  • 运行截图不再写入数据库(实测 527MB → 35MB),面板首屏体积减少约 70%

⁠快速开始

docker run -d \
  --name bemby \
  --restart unless-stopped \
  -p 3000:3000 \
  -v /docker/bemby-data:/app/data \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD=changeme \
  -e JWT_SECRET="$(openssl rand -hex 32)" \
  liveinaus/bemby:pro

镜像同时发布到 Docker Hub 与 GitHub 容器仓库(GHCR),二者内容一致,可任选其一:liveinaus/bemby:pro 或 ghcr.io/liveinaus/bemby:pro。

镜像标签::pro 为 Pro 稳定版(推荐);:dev 为开发版;:beta 为测试版;:latest 是最后一个开源版本 v1.0.0,不再更新。从 :latest 升级只需把镜像改为 liveinaus/bemby:pro,数据目录可直接沿用。

JWT_SECRET 为必填项,且不能使用公开的占位值(如 change-me-in-production),否则应用将拒绝启动。请用 openssl rand -hex 32 生成。

默认值:端口 3000,数据库 /app/data/bemby.db,时区 UTC。如需指定时区,追加 -e TZ=Asia/Shanghai。

Bemby

⁠English

Docker Pulls Changelog Telegram

简体中文⁠ | English

If Bemby saves you time, please consider giving it a star on GitHub. It helps others find the project and keeps development going.

A self-hosted automation tool for managing daily Telegram bot check-ins (签到) and Emby video-watch sessions. Includes a web admin portal for managing multiple accounts and jobs.

⁠What Pro adds over the open-source 1.0.0

The open-source build stopped at v1.0.0 (the :latest image, August 2026). Everything since is in Pro only (the :pro image). The main additions are below; the changelog⁠ has the details.

Web and Mini App automation

  • Many new page steps -- type on the keyboard, press a key (Enter / Ctrl+Enter), press and hold (also at an offset), drag a slider or puzzle piece, pick a dropdown option, go to a URL and back, scroll to an element, read text, pick or collect elements, run a script on the page
  • Flow control -- if / else branches, repeat a number of times, for each value in a list, end the job early as a success or failure, hand the job over to another template
  • Variables and AI input -- set variables (random placeholders included), have the AI write into a field, send a notification mid-run
  • Email and 2FA -- read a verification code or link from email, take an address from a mailbox pool, msOauth2api mailbox sign-in, capture a two-factor secret and work out its authenticator code (TOTP)
  • Passkeys -- register a passkey on a virtual security key, save it and sign in with it later, no hardware needed
  • Picture captchas -- the AI solves hCaptcha-style image grids and can click several positions at once; Cloudflare Turnstile inside Mini Apps; pages inside iframes
  • Watch and drive the browser -- follow a job's browser live over VNC, or open one by hand; manage, rename and clear browser profiles, or run without one
  • Mini Apps on the reply keyboard -- the app buttons above the composer open too, and their sendData result is passed to the bot as the official client does
  • Browser self-test and persona -- pick an exit and score the browser on BrowserScan, CreepJS, FingerprintJS and real Cloudflare challenge pages (0-100, with what cost points); the browser can claim Windows, macOS or Linux, takes your own Windows / Mac fonts, and keeps the exit IP city's timezone

Data

  • Data store -- folders of records that outlive a run (accounts a signup made, invite codes), read in any field as {data.folder.key} and written or deleted from a job; sort, filter, import and export (plain text too)
  • Loop over a data folder -- one round per record, skipping records already done, so a rerun carries on where the last stopped

Telegram accounts

  • Session (card) accounts -- bulk-import bought session accounts, check they are alive first, then take ownership of them in bulk
  • Bulk Set Privacy and Bulk Extract Messages (pull text out of one chat by keyword and regex, optionally into the data store)
  • Bulk profile extras -- random avatars (an avatar pool you can stock ahead, zip upload included) and usernames (@handle)
  • Share phone number, account search and filters, phone number validation, a Telegram avatar and user ID column, low-limited spam status, manual reconnect

Messenger

  • Channel DMs, polls and quizzes (vote and see the results), @-mentions of group members who have no username, member search in groups, group service messages, reply previews with jump-to, stickers, and each account's folder remembered
  • Telegram layer 229, so a bot's rich page messages render instead of showing blank

Jobs and scheduling

  • One-time jobs, run-every-X-days for every job type, job icons, filters on the jobs list
  • More flexible check-in -- match buttons by text, several keywords, a button from the pinned message first, the check-in button from the last message's keyword
  • Group join verification -- the AI picks the verification button (with a custom hint), and a check posed as a quiz poll is answered too
  • Bulk jobs -- run in the background, can be paused and skipped, with an adjustable gap; account filters when creating jobs from a template
  • Per-job proxy override, and template editing straight from the jobs list
  • A sturdier scheduler -- planned times survive an upgrade, hung runs are reclaimed, runs missed today are caught up today, and the simultaneous run cap is a setting
  • Mark a job successful or failed by hand -- correct the latest run's verdict or record the work as done by hand, and the next run is planned from that

Proxies

  • Node subscriptions (VLESS / VMess / Trojan / Shadowsocks, with the Xray core), a global proxy for censored networks, random proxy pools, proxy health checks and testing, auto refresh

Emby Watch

  • More servers (including play-session gateways), ignore an invalid SSL certificate, and a proxy of its own for the watch job

System

  • Light / dark theme, update check, system log in Settings, system reboot, Telegram connections panel with a connection cap, and a way back in from a forgotten password
  • Run screenshots kept out of the database (527MB to 35MB on a real install), and a panel whose first load is about 70% smaller
⁠Quick Start
docker run -d \
  --name bemby \
  --restart unless-stopped \
  -p 3000:3000 \
  -v /docker/bemby-data:/app/data \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD=changeme \
  -e JWT_SECRET="$(openssl rand -hex 32)" \
  liveinaus/bemby:pro

Images are published to both Docker Hub and the GitHub Container Registry (GHCR) with identical contents; use either liveinaus/bemby:pro or ghcr.io/liveinaus/bemby:pro.

Image tags: :pro is the stable Pro build (recommended); :dev is the development build; :beta is the beta; :latest is the last open-source release, v1.0.0, and no longer moves. To move from :latest, change the image to liveinaus/bemby:pro; the data directory carries over as it is.

JWT_SECRET is required and must not be a publicly known placeholder (e.g. change-me-in-production), or the app refuses to start. Generate one with openssl rand -hex 32.

Defaults: port 3000, database at /app/data/bemby.db, timezone UTC. To set a timezone add -e TZ=Australia/Sydney.


完整说明 / Full documentation: https://github.com/liveinaus/BembyPro#readme⁠

Tag summary

Content type

Image

Digest

sha256:1ce2f6da4…

Size

202.6 MB

Last updated

about 1 hour ago

docker pull liveinaus/bemby:dev