一、简介
TG上的某些机器人经常会有每日签到拿积分的活动,虽说每天上号点一点也不麻烦,但时间久了就经常会忘记。本教程将分享一种比较简单的方法,基于TG API以及Python的第三方包Telethon,部署到VPS上,每天定时上TG自动签到
二、准备工作
1、已开启API的TG号(下面会讲述如何开启TG API)
2、国外VPS一台(或能魔法上网的软路由)
3、Python 3.5+
三、开启TG API
申请网址:https://my.telegram.org
1、输入手机号登录,注意验证码会发送至TG客户端而不会以短信形式发送
2、登录进去后选“API development tools”
3、根据下图提示输入申请信息
4、开通完成后,保存api_id、api_hash两个值!
四、安装Python与Telethon
1、安装Python
检查VPS上Python的版本信息,查询命令:python --version 或 python3 --version。若版本号小于3.5.0,则需安装新版Python,请根据自己VPS的实际情况配置环境。
2、安装Telethon
pip3 install telethon
五、自动签到脚本(Python版)
1、复制以下代码,根据需要修改,保存为tgsign.py
import os
import time
import asyncio
from telethon import TelegramClient
async def send_messages():
#你的TG App api_id 用, 分开
api_id = [12345,67890]
#你的App api_hash放在''内用, 分开
api_hash = ['abcdefg', 'hijklmn']
# 创建一个列表,每个元素是一个包含联系人和消息的元组
#前面是机器人的用户名@开头 后面放签到的内容 例如/checkin
contacts_and_messages = [
("@hao123", "/checkin")
]
for num in range(len(api_id)):
client = TelegramClient(f"id_{api_id[num]}", api_id[num], api_hash[num])
await client.start()
for contact, message in contacts_and_messages:
sent_message = await client.send_message(contact, message)
time.sleep(5)
await client.send_read_acknowledge(contact)
messages = await client.get_messages(contact, limit=1)
last_message = messages[0] if messages else None
if last_message:
print(f"Last message: {last_message.text}")
print(f"Done! Session name: id_{api_id[num]}")
# 客户端退出
await client.disconnect() # 或者使用 await client.log_out()
async def main():
await send_messages()
if __name__ == "__main__":
asyncio.run(main())
2、先运行一次脚本,输入python3 tgsign.py回车,根据提示填写手机号与验证码。成功后Telethon会在当前文件夹下生成.session会话文件,以后就不用再输入验证码了(如无法生成会话文件,请检查Python内置库sqlite3是否已正常安装)
3、设置定时任务
输入crontab -e进入定时任务编辑器,添加:(根据实际情况调整,如python路径、脚本文件存放路径等)
0 6 * * * cd /root && /usr/local/bin/python3 tgsign.py
Comments | NOTHING