Skip to main content

Telegram signer

Project description

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

English

安装

pip install -U tg-signer

或者为了提升程序速度:

pip install "tg-signer[speedup]"

使用方法

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.2rc1.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

tg_signer-0.4.2rc1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tg_signer-0.4.2rc1.tar.gz
  • Upload date:
  • Size: 18.3 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.2rc1.tar.gz
Algorithm Hash digest
SHA256 47d7c83573606df2095181058906c2005a53c044e9055664267bb3d1fb47a9d1
MD5 0df2ad069d2eecedf2c6930458912817
BLAKE2b-256 768909983e2a1fa69dc04c2d058e6265973d24c0e83f1fcdb6792312cf27eb6b

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: tg_signer-0.4.2rc1-py3-none-any.whl
  • Upload date:
  • Size: 18.2 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.2rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 e309250eaf982277db9bfc5981a91b8f2905cf00c5360d8634ce02e48a82c2b6
MD5 6e60eebcd6d2f6c900f3499400df460d
BLAKE2b-256 cad9a38f02803eb2a7806b8d094bff900854f58f1f287bbb20f27d962f74043b

See more details on using hashes here.

Provenance

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