前言
最近加入了一个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()
效果如下
原创文章,作者:VAY冬冬,如若转载,请注明出处:https://blog.vay1314.top/archives/230
评论的一键打卡怎么没了(╯‵□′)╯︵┴─┴
冬佬牛BOωO
太强了
database_encryption_key='xxx'
您好,不知道这个key是填什么呢?
database_encryption_key='xxx'您好,此处的xxx不知道该填什么呢OωO
此处为数据库加密密钥,自己编写一个即可
谢谢