Skip to content

TdBotProject/TdPmBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

90357c4 · Feb 22, 2021
Dec 15, 2020
Feb 22, 2021
Feb 19, 2021
Feb 22, 2021
Aug 11, 2020
Dec 10, 2020
Dec 15, 2020
Feb 11, 2021
Feb 11, 2021
Jan 7, 2021
Dec 10, 2020
Jan 5, 2021
Feb 22, 2021
Feb 22, 2021
Dec 10, 2020
Dec 10, 2020
Feb 22, 2021

Repository files navigation

TdPmBot

全功能 Telegram 私聊机器人以及创建器.

安装

依赖 (Linux)

apt install -y openssl git zlib1g libc++-dev default-jdk

注: 仅支持 amd64, i386, arm64, 否则需自行编译 LibTDJni 放置在 libs 文件夹下. 如遇到找不到 LIBC 库, 请更新系统或编译安装.

依赖 (Windows)

需要安装 Git for WindowsVC++ 2015OpenJDK 11

您也可使用 vcpkg 编译安装 opensslzlib

管理

echo "alias pm='bash $PWD/bot.sh'" >> $HOME/.bashrc
source $HOME/.bashrc

# 注册 ./bot.sh 的命令别名 ( pm )
pm config # 编辑配置文件
pm run # 编译安装并进入交互式认证  
pm init # 注册 systemd 服务  
pm <start/stop/restart> # 启动停止  
pm <enable/disable> # 启用禁用 (开机启动)  
pm rebuild # 重新编译  
pm update # 更新  
pm force-update # 强制重新更新
pm upgrade # 更新并重启服务  
pm log # 实时日志  
pm logs # 所有日志

配置

pm config

BOT_LANG: 工作语言
BOT_TOKEN: 机器人令牌
BOT_OWNER: 管理员ID
PM_MODE: 运行模式
PM_WHITE_LIST: 白名单列表
LOG_LEVEL: 日志等级 - 默认为 INFO
DATA_DIR: 数据存放目录 - 默认为当前目录下 data 文件夹
CACHE_DIR: 缓存存放目录 - 默认为当前目录下 cache 文件夹
ERROR_REPORT: 错误报告 - 默认禁用
AUTO_BACKUP: 自动备份 - 默认禁用
BACKUP_OVERWRITE: 备份覆盖间隔 - 默认持续

工作语言

机器人的默认语言, 以及非 私有 模式下命令模板的语言 ( 必须在 BOT_LANG_LIST 中 ).

机器人令牌

相当于账号与密码, 从 @BotFather 获取, 参见 https://core.telegram.org/bots#creating-a-new-bot .

管理员与白名单 ID

启动机器人后使用 /id 获取自己的 ID, 使用 /id <回复消息 (群组中) / @用户名 / 引用> 获取他人 ID.

运行模式

公开

运行模式值 public, 此模式下所有人都可创建机器人.

白名单

运行模式值 white-list, 此模式下列表中的用户与您可以创建机器人.

需配置白名单设置项:

PM_WHITE_LIST:
  - id1
  - id2
  - ...

公开模式也可以使用该参数, 用于绕过导入机器人大小限制.

私有

运行模式值 private, 此模式下主实例作为私聊机器人.

您仍可创建机器人, 但没有命令模板 (即补全).

错误报告

当机器人出错时, 通常能够处理并继续运行, 您可将错误信息提交与我们以改进此程序.

默认禁用, 仅在标准输出流打印错误.

格式: disable: 禁用 owner: 发送到与与您的私聊 group: 机器人接入的群组

或填写会话ID, 注意: 与永不离线的 telegram-http-api 服务器不同, 使用低层协议的机器人只能访问本地有记录的会话.

自动备份

默认禁用, 格式同上, 使用见下 迁移 节.

备份覆盖间隔

通常情况下您只需要最新的备份文件以免托管服务终止, 所以此项默认设为持续覆盖值 -1, 以避免浪费空间.

否则, 在超过指定间隔后, 将另重新发送备份文件而不是覆盖 (在 Telegram 中表现为编辑文件).

时间格式: 1d2h3m4s秒数 例子: 2m30s ( 两分钟三十秒 ) 或者: 180 ( 三分钟 )

其他

如需更改, 复制 _bot.confbot.conf.

SERVICE_NAME: systemd 服务名称, 默认 `td-bots`, 修改如果您需要多个实例.
JAVA_ARGS: JVM 启动参数.
ARGS: 启动参数.

命令行命令

备份 & 迁移

pm run --backup [fileName 可选]

备份所有迁移需要的文件到 tar.xz 包, 解压即可覆盖数据.

您也可以直接打包 data 目录, 但包含无用的数据库与文件缓存.

指定配置文件

pm run --config /path/to/config.yml

不常用, 但您可以写入 bot.confargs 中作为默认参数.

公开实例

@TdPmBot

使用

如需帮助,请通过 @TdBotProject 的讨论群组与我们联系.

创建新机器人

使用 /new_bot 命令进入创建步进程序, 输入完后根据提示发送 Bot Token 到机器人即可完成创建,

您也可以使用该 Token 作为命令参数传入直接创建 ( /new_bot <BotToken> ).

创建完成后您需要根据提示启动该机器人并保持不禁用, 否则将无法收到消息.

导入机器人

将删除时生成的 .td_pm 格式文件发送给主实例即可. 该文件包含登录状态, 设置和消息记录.
该文件使用自有格式并进行了 xz 压缩, 应该足够小, 所以公开模式实例中有导入大小限制 (避免恶意行为).

  • 保存登录状态意味着导入后可以收到删除该机器人后错过的消息
  • 如果您使用其他帐号导入, 旧的消息记录将被跳过
  • 如果要导入到的实例已存在该机器人, 登录状态和旧的消息记录将被跳过

编辑机器人

使用 /my_bots 命令得到机器人菜单, 选择要设置的机器人后将得到一个管理菜单.

欢迎消息

即对机器人发送 /start 时回复的消息.

点击 编辑 按钮开始设置, 因为消息跨机器人无法转存, 所以您需要转到对应机器人进行设置.
点击 重置 按钮重置回默认欢迎消息.

接入群组

所有消息将被发往目标群组而不是您的私聊.

仅管理员可操作: 默认所有群组成员可操作, 开启此项以禁止非管理员操作机器人.

暂停接入: 暂停接入到群组, 收到新消息时机器人无法访问接入的群组时也会触发此项.

行为选项

保留提示: 不要自动删除操作提示消息.

双向同步: 直接复制对方的消息, 而不是每次都转发, 并同步对方的编辑, 删除操作.

保持回复: 没有进入 ( /join ) 对应会话的情况下保持对消息的回复.

忽略删除: 不要同步本方的消息删除, 当同时开启 保留提示 时在提示中增加一个删除该消息的按钮.

命令管理

您可以为机器人添加命令, 并为每个命令设置不同的消息内容, 并接收到对方消息所回复之命令.

也可以通过链接 ( start payload, 链接可以在命令设置中找到 ), 点击效果同打开bot并发送命令.

格式为 https://t.me/<botUserName>?start=<command> (参见 https://core.telegram.org/bots#deep-linking ).

私聊命令: 仅公开模式主实例选项, 使用该命令后机器人接受私聊消息. ( 您可提示对方使用 /cancel 退出 ). 隐藏命令: 不将命令显示在命令列表中. 禁用命令: 禁用但不删除.

PM 操作

提示消息

当客人发送消息到机器人, 机器人会为每人每 5 条消息发送一条提示消息给您 ( 包括用户ID 与 引用 ).

回复这条消息: 消息将被直接发送给客人.

回复消息

客人的消息将被转发至主人或接入的群组 (如果有设置).

如果启用了 双向同步, 此处将直接发送对方的消息的复制, 而不是每次转发消息, 否则如果对方回复的消息存在, 将再发送一条提示消息回复对应的消息.

对客人的消息的可用操作:

回复这条消息: 消息将被直接发送给客人或回复对应消息.

回复对方的消息直接发送消息的复制给客人, 如果没有进入对应的会话, 将不会 回复 对应消息, 除非您开启了 保持回复.

持续对话

提示消息 / 您发送或收到的消息 回复 /join ( 也可以使用 对方用户名 / ID / 引用 作为参数).

进入该对话后所有消息将被 发送/回复 到目标对话.

注: 如果接入到了群组, 请确保机器人有访问消息权限 ( BotFather -> /setprivacy -> Disable ), 否则无法收到此类与机器人无关的消息.

屏蔽用户

命令为 /block 或别名 /ban, 用法同上.

屏蔽后会忽略对方发送的所有消息, 使用 /unblock 或别名 /unban 取消屏蔽, 另: 无法屏蔽自己.

撤回所有消息

命令为 /recall, 用法同上.

使用后删除有记录的双方所有消息, 并删除记录, 所以配合屏蔽使用时请先屏蔽.