发布于: 2022-4-6最后更新: 2023-9-11字数 1552阅读时长 4 分钟

type
status
date
update date
slug
summary
tags
category
icon
password
Telegram 签到机器人
Telegram-cli
telegram-cli for docker
Build
Login
Issues
Telethon
Install
Code example
Parsing message
 
 

telegram-cli for docker

 
在 NAS 的 docker 上使用 telegram-cli ,启动成功后无法登录,表现为无法弹出输入手机号的对话。正常启动 telegram-cli 会要求输入手机号和登录验证码。但是 docker 始终无法登录,尝试了多个镜像文件,依旧无法实现。telegram-cli for docker 实验失败。
notion image

telegram-cli

Command-line interface for Telegram.
由于使用 docker 失败,在电脑上编译出来的 telegram-cli 可以正常使用,但是将这个正常使用的 telegram-cli 放到 docker 中,依旧无法登录。

Build

当前我的目录是:/home/eric/tg
配置过程中会提示缺少依赖 : libgcrypt 、zlib1g 、 libconfig 、 libjansson 等等依赖,其实缺少的应该是 libgcrypt -dev 、zlib1g -dev (依赖名加-dev),手动执行 sudo apt-get install 即可。
安装完所有依赖后make
按照官方说明,正常情况下,可以直接在 /home/ubuntu/tg/bin 生成 generate、 telegram-cli 、tg-server.pub(可能没有)、 tl-parser
但是我就遇到编译报错了:
notion image
翻了一下 issues ,有位大佬给了一个配置命令,运行完重新 make 就可以完成编译。

Login

运行 telegram-cli
根据提示依次输入手机号(+8618900001000),telegram 内的登录验证码,完成登录。登录后会记录账号登录信息(有效时长不明)。
notion image

Issues

至此,终于用上了 telegram-cli 登录上了账号。终于可以开始写自动签到机器人了……吗?然后就遇到了以下问题:

登录错误

notion image
经测试,这个错误应该是登录鉴权错误,telegram-cli 运行信息中,有一条信息很重要:
这个目录的作用是存储登录信息,删除这个文件夹就可以解决这个登录错误。删除后,即可重新登录。

信息内容无法读取

签到功能需要向签到 bot 发送签到指令,签到 bot 返回问题和答案。下图是手机上实际从签到机器人收到的签到问题和选项(部分信息已隐藏)。由图可见,签到问题在一个消息框中,但是答案选项在按键中(最开始我以为这个问题和答案是一个整体,类似卡片消息)后来在 https://doc.stella.sanuker.com/docs/en/tg-message-types/ 查到,没有卡片式的消息,所以上面这个类似卡片消息分为两部分,上一部分是文本消息框,下方是button。
notion image
telegram-cli 发送消息使用 msg “机器人ID” “消息内容” ,发送签到消息后,在 telegram-cli 命令行中收到上面的签到问题显示为: »»» [unsupported] 。使用基于 telegram-cli 实现的第三方 python 库 ,返回结果是(节选):
返回信息节选中接收到的消息内容是'media': { 'type': 'unsupported'},和使用 telegram-cli 得到的内容相同,无法看到消息内容。所以一开始认为这是一种消息类型。后来查询到并没有这种消息集合类型。于是猜测是 telegram-cli 对这种消息集合处理的问题。
 
至此 telegram-cli 获取消息失败, 此方法启用。 telegram-cli 可以用来创建自定义机人,对telegram bot的自定义开发提供了基础能力。
 

使用Telethon 

Telethon

 Telethon is an asyncio Python 3  MTProto  library to interact with  Telegram's API as a user or through a bot account (bot API alternative).

Install

Code example

示例代码完成了三件事情:
  1. telegram 账号登录
  1. 向目标机器人发生信息
  1. 获取最近一条机器人发回的信息(接收消息可换用以下函数)

接收消息函数

Parsing message

最近收到的一条信息如下:
本条消息中最重要的两个信息:
  • message='签到需要根据问题选择您认为正确的答案:问题如下:**************?'
  • reply_markup=ReplyInlineMarkup(rows=[KeyboardButtonRow(buttons=[ ] ) ] )
其中 message 中是签到问题,reply_markup 是按键列表。至此可以正常解析签到信息。
如何处理签到信息,得出答案在这里就不详细介绍了。如何提交打卡答案,利用按键的 click() 方法:
 
 
 

Loading...
OPPO Enco free2 固件降级详解

🎧OPPO Enco free2 固件降级详解

OPPO Enco free2 蓝牙耳机刷写不同版本固件


人生苦短,我用 docker - 构建自定义镜像

🐽人生苦短,我用 docker - 构建自定义镜像

最近想要将博客(基于Django)迁移到容器内,同时也想通过 Jupyter-Notebook 创建一个 Python 和 JavaScript 的在线 IDE ,此处进行一些记录。