Skip to main content

Telegram signer

Project description

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

English

功能

  • 每日定时和随机误差时间签到

  • 根据配置的文本点击键盘

  • 调用AI进行图片识别并点击键盘

  • 个人、群组、频道消息监控与自动回复

    ...

安装

需要Python3.9及以上

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]
  --session-string TEXT           Telegram Session String,
                                  会覆盖环境变量`TG_SESSION_STRING`的值  [env var:
                                  TG_SESSION_STRING]
  --in-memory                     是否将session存储在内存中,默认为False,存储在文件
  --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 -- -10006758812 浇水  # 对于负数需要使用POSIX风格,在短横线'-'前方加上'--'
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
4. 是否有键盘?(y/N):y
5. 键盘中需要点击的按钮文本(无则直接回车): 签到
6. 是否需要通过图片识别选择选项?(y/N):y
在运行前请通过环境变量正确设置`OPENAI_API_KEY`, `OPENAI_BASE_URL`。默认模型为"gpt-4o", 可通过环境变量`OPENAI_MODEL`更改。
继续配置签到?(y/N):n
每日签到时间(如 06:00:00): 08:10:00
签到时间误差随机秒数(默认为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!

版本变动日志

0.5.0

  • 根据配置的文本点击键盘
  • 调用AI识别图片点击键盘

配置与数据存储位置

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

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

3 directories, 4 files

Project details


Release history Release notifications | RSS feed

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.5.0.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tg_signer-0.5.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file tg_signer-0.5.0.tar.gz.

File metadata

  • Download URL: tg_signer-0.5.0.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tg_signer-0.5.0.tar.gz
Algorithm Hash digest
SHA256 6cebba6c6abc3ba9e37505639f4efc4b1874471514938916c6a5f57cfc54d0fd
MD5 7204978a001cee62429203c34779a827
BLAKE2b-256 eb326ec82e3fb538d3432a5b8791da62c73b3c41fdba2631c1492cbf5277acd3

See more details on using hashes here.

File details

Details for the file tg_signer-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: tg_signer-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tg_signer-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc7dc53385acc66a76d9db058ee3a84aa72f9b0f863159779241df63ba2c6c25
MD5 6ca91dc6bce03a333d77d2edb9a45371
BLAKE2b-256 0de7330326ab00a7462f9614126797de657dcba91310fb376b5920181c08d0c2

See more details on using hashes here.

Supported by

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