TG自动签到之算数验证

前言

最近加入了一个TG群,群内有个机器人可以每天签到累计积分,想使用自动化签到省时省心,但签到时机器人会返回算数验证。在谷歌搜索了下找到一篇文章,参考文章《telegram-自动签到》,使用作者的部分代码,感谢原作者。

源码

一.运行环境

1.python-telegram库

pip install python-telegram

2.TDLib环境

python-telegram作者提供了他构建的TDLib文件,下载地址:libtdjson.so

如果使用上面的TDLib不正常,可以自行构建,使用TDLib 构建指令生成器,按自己的系统环境选择,创建构建的命令。

二.撸代码

#coding=UTF-8
from telegram.client import Telegram
import re,time

tg = Telegram(
    api_id='xxx',
    api_hash='xxx',
    phone='xxx',
    database_encryption_key='xxx',
    library_path='xxx', #此处指向TDLib环境文件
    #tdlib_verbosity=4,
)
tg.login()

def send_verification_code(update):
    # 监听所需会话
    if xxx == update['message']['chat_id']:#此处xxx是机器人的id
        # 提取问题并且计算
        question = update['message']['content']['text']['text']
        print(question)
        a = re.findall(r"\s\s(.+?)\+", question, re.M)
        b = re.findall(r"\+(.+?)=", question, re.M)
        if a and b:
            print(a, b)
            c = int(a[-1].strip()) + int(b[-1].strip())
            answers = update['message']['reply_markup']['rows'][0]
            print(f'{a} + {b} = {c}')
            # 用答案和内联键盘值做匹配,一旦匹配执行按钮点击效果
            for answer in answers:
                print(f'答案项:{answer["text"]}')
                if int(answer['text']) == c:
                    payload = {
                        '@type': 'callbackQueryPayloadData',
                        'data': answer['type']['data'],  ##每一个内联键盘都带有data数据
                    }
                    # 发送答案(点击内联键盘)
                    result = tg.call_method(method_name='getCallbackQueryAnswer',
                                            params={'chat_id': update['message']['chat_id'],
                                                    'message_id': update['message']['id'], 'payload': payload})
                    result.wait()
                    if result.error:
                        print(f'getCallbackQueryAnswer error: {result.error_info}')
                    else:
                        print(f'getCallbackQueryAnswer: {result.update}')

tg.add_update_handler('updateNewMessage', send_verification_code)

result = tg.send_message(
    chat_id=xxx, #此处xxx是机器人的id
    text="/checkin",
)

result.wait()
print(f'等待接收签到验证信息')
time.sleep(15)
tg.stop()

效果如下image-20220226154659406

原创文章,作者:VAY冬冬,如若转载,请注明出处:https://blog.vay1314.top/archives/230

(0)
VAY冬冬的头像VAY冬冬
上一篇 2022年2月12日
下一篇 2022年5月3日

相关推荐

0 0 投票数
文章评分
订阅评论
提醒
guest
8 评论
最旧
最新 最多投票
内联反馈
查看所有评论
DDD

评论的一键打卡怎么没了(╯‵□′)╯︵┴─┴

Mark

冬佬牛BOωO

lfsc

太强了

Dan

database_encryption_key='xxx'

Dan

您好,不知道这个key是填什么呢?

Dan

database_encryption_key='xxx'您好,此处的xxx不知道该填什么呢OωO

Dan

谢谢