Skip to main content

Telegram signer

Project description

Telegram每日自动签到/个人、群组、频道消息监控与自动回复

English

安装

pip install -U tg-signer

或者为了提升程序速度:

pip install "tg-signer[speedup]"

Docker

未上传直接使用的镜像,可以自行build镜像,见docker 目录下的Dockerfile和 README

使用方法

Usage: tg-signer [OPTIONS] COMMAND [ARGS]...

  使用<子命令> --help查看使用说明

子命令别名:
  run_once -> run-once
  send_text -> send-text

Options:
  -l, --log-level [debug|info|warn|error]
                                  日志等级, `debug`, `info`, `warn`, `error`
                                  [default: info]
  --log-file PATH                 日志文件路径, 可以是相对路径  [default: tg-signer.log]
  -p, --proxy TEXT                代理地址, 例如: socks5://127.0.0.1:1080,
                                  会覆盖环境变量`TG_PROXY`的值  [env var: TG_PROXY]
  --session_dir PATH              存储TG Sessions的目录, 可以是相对路径  [default: .]
  -a, --account TEXT              自定义账号名称,对应session文件名为<account>.session  [env
                                  var: TG_ACCOUNT; default: my_account]
  -w, --workdir PATH              tg-signer工作目录,用于存储配置和签到记录等  [default:
                                  .signer]
  --help                          Show this message and exit.

Commands:
  list       列出已有配置
  list-members  查询聊天(群或频道)的成员, 频道需要管理员权限
  login      登录账号(用于获取session)
  logout     登出账号并删除session文件
  monitor    配置和运行监控
  reconfig   重新配置
  run        根据任务配置运行签到
  run-once   运行一次签到任务,即使该签到任务今日已执行过
  send-text  发送一次消息, 请确保当前会话已经"见过"该`chat_id`
  version    Show version

例如:

tg-signer run
tg-signer run my_sign  # 不询问,直接运行'my_sign'任务
tg-signer run-once my_sign  # 直接运行一次'my_sign'任务
tg-signer send-text 8671234001 /test  # 向chat_id为'8671234001'的聊天发送'/test'文本
tg-signer send-text --delete-after 1 8671234001 /test  # 向chat_id为'8671234001'的聊天发送'/test'文本, 并在1秒后删除发送的消息
tg-signer list-members --chat_id -1001680975844 --admin  # 列出频道的管理员
tg-signer monitor run  # 配置个人、群组、频道消息监控与自动回复

配置代理(如有需要)

tg-signer不读取系统代理,可以使用环境变量 TG_PROXY或命令参数--proxy进行配置

例如:

export TG_PROXY=socks5://127.0.0.1:7890

登录

tg-signer login

根据提示输入手机号码和验证码进行登录并获取最近的聊天列表,确保你想要签到的聊天在列表内。

发送一次消息

tg-signer send-text 8671234001 hello  # 向chat_id为'8671234001'的聊天发送'hello'文本

运行签到任务

tg-signer run

或预先执行任务名:

tg-signer run linuxdo

根据提示进行配置即可。

示例:

开始配置任务<linuxdo>
第1个签到
1. Chat ID(登录时最近对话输出中的ID): 10086
2. 签到文本(如 /sign): /check_in
3. 等待N秒后删除签到消息(发送消息后等待进行删除, '0'表示立即删除, 不需要删除直接回车), N: 5
继续配置签到?(y/N):n
4. 每日签到时间(如 06:00:00): 08:10:00
5. 签到时间误差随机秒数(默认为0): 10

配置与运行监控

tg-signer monitor run my_monitor

根据提示进行配置。

示例:

开始配置任务<my_monitor>
聊天chat id和用户user id均同时支持整数id和字符串username, username必须以@开头,如@neo

配置第1个监控项
1. Chat ID(登录时最近对话输出中的ID): -4573702599
2. 匹配规则('exact', 'contains', 'regex'): contains
3. 规则值(不可为空): kfc
4. 只匹配来自特定用户ID的消息(多个用逗号隔开, 匹配所有用户直接回车): @neo
5. 默认发送文本: V Me 50
6. 从消息中提取发送文本的正则表达式:
7. 等待N秒后删除签到消息(发送消息后等待进行删除, '0'表示立即删除, 不需要删除直接回车), N:
继续配置?(y/N):y

配置第2个监控项
1. Chat ID(登录时最近对话输出中的ID): -4573702599
2. 匹配规则('exact', 'contains', 'regex'): regex
3. 规则值(不可为空): 参与关键词:「.*?」
4. 只匹配来自特定用户ID的消息(多个用逗号隔开, 匹配所有用户直接回车): 61244351
5. 默认发送文本:
6. 从消息中提取发送文本的正则表达式: 参与关键词:「(?P<keyword>(.*?))」\n
7. 等待N秒后删除签到消息(发送消息后等待进行删除, '0'表示立即删除, 不需要删除直接回车), N: 5
继续配置?(y/N):n

示例解释:

  1. 聊天chat id和用户user id均同时支持整数id和字符串username, username必须以@开头 如"neo"输入"@neo",注意username 可能不存在,示例中chat id为-4573702599表示规则只对-4573702599对应的聊天有效。

  2. 匹配规则,目前皆忽略大小写

    1. exact 为精确匹配,消息必须精确等于该值。

    2. contains 为包含匹配,如contains="kfc",那么只要收到的消息中包含"kfc"如"I like MacDonalds rather than KfC"即匹配到(注意忽略了大小写)

    3. regex 为正则,参考 Python正则表达式 ,在消息中有搜索到该正则即匹配,示例中的 "参与关键词:「.*?」" 可以匹配消息: "新的抽奖已经创建... 参与关键词:「我要抽奖」

      建议先私聊机器人"

    4. 可以只匹配来自特定用户的消息,如群管理员而不是随便什么人发布的抽奖消息

    5. 可以设置默认发布文本, 即只要匹配到消息即默认发送该文本

    6. 提取发布文本的正则,例如 "参与关键词:「(.*?)」\n" ,注意用括号(...) 捕获要提取的文本, 可以捕获第3点示例消息的关键词"我要抽奖"并自动发送

示例运行输出:

[INFO] [tg-signer] 2024-10-25 12:29:06,516 core.py 458 开始监控...
[INFO] [tg-signer] 2024-10-25 12:29:37,034 core.py 439 匹配到监控项:MatchConfig(chat_id=-4573702599, rule=contains, rule_value=kfc), default_send_text=V me 50, send_text_search_regex=None
[INFO] [tg-signer] 2024-10-25 12:29:37,035 core.py 442 发送文本:V me 50
[INFO] [tg-signer] 2024-10-25 12:30:02,726 core.py 439 匹配到监控项:MatchConfig(chat_id=-4573702599, rule=regex, rule_value=参与关键词:「.*?」), default_send_text=None, send_text_search_regex=参与关键词:「(?P<keyword>(.*?))」\n
[INFO] [tg-signer] 2024-10-25 12:30:02,727 core.py 442 发送文本:我要抽奖
[INFO] [tg-signer] 2024-10-25 12:30:03,001 core.py 226 Message「我要抽奖」 to -4573702599 will be deleted after 5 seconds.
[INFO] [tg-signer] 2024-10-25 12:30:03,001 core.py 229 Waiting...
[INFO] [tg-signer] 2024-10-25 12:30:08,260 core.py 232 Message「我要抽奖」 to -4573702599 deleted!

配置与数据存储位置

数据和配置默认保存在 .signer 目录中。然后运行 tree .signer,你将看到:

.signer
├── latest_chats.json  # 获取的最近对话
├── me.json  # 个人信息
└── signs
    └── linuxdo  # 签到任务名
        ├── config.json  # 签到配置
        └── sign_record.json  # 签到记录

3 directories, 4 files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tg_signer-0.4.3rc1.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

tg_signer-0.4.3rc1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file tg_signer-0.4.3rc1.tar.gz.

File metadata

  • Download URL: tg_signer-0.4.3rc1.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for tg_signer-0.4.3rc1.tar.gz
Algorithm Hash digest
SHA256 1a791b2deb49a0abb57dbbebdfcd3b90c9123d9afa9d80c66133e71417d21d51
MD5 9315e2f665b3e0d4895aa36505d83cf1
BLAKE2b-256 770486cd4562aadfbbdd65934408b55cdfc5781873308a48a5d00033a81685d0

See more details on using hashes here.

File details

Details for the file tg_signer-0.4.3rc1-py3-none-any.whl.

File metadata

  • Download URL: tg_signer-0.4.3rc1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for tg_signer-0.4.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 d48b20c7713cab56ca234c56ed967ec494eef625ab416d5a7d05aac3dc5c82a0
MD5 ce4377f20b084a3b69ccf4eb0ab6f06b
BLAKE2b-256 841ccce53534edb5436286f986ac7aef120d3d78a346cce186eab1f8d5aabc68

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page