利用vps+python自动签到telegram机器人拿积分
- 建站相关
- 27天前
- 20热度
- 0评论
在新的 Debian VPS 上:
更新系统
apt update && apt upgrade -y
安装 Python3、pip、虚拟环境
apt install -y python3 python3-pip python3-venv
2️⃣ 创建 Python 虚拟环境
创建虚拟环境
python3 -m venv ~/tg_env
激活虚拟环境
source ~/tg_env/bin/activate
安装 Telethon
pip install telethon
===============================================================================================
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意::::::有些 VPS 或系统环境允许直接安装 Python 和 pip,全局使用,无需虚拟环境。
1️⃣ 全局安装 Python 和 Telethon
在 Debian/Ubuntu 系统上:
更新系统
apt update && apt upgrade -y
安装 Python3 和 pip
apt install -y python3 python3-pip
安装 Telethon
pip3 install telethon
注意:如果系统启用了 PEP 668(Debian/Ubuntu 未来版本默认开启),你可能需要加 --break-system-packages 才能用 pip3 安装:
pip3 install --break-system-packages telethon
2️⃣ 使用 Python 脚本生成 session
你可以直接在全局 Python 下运行脚本:
python3 generate_session.py
session 文件会在当前目录生成
不需要激活虚拟环境
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3️⃣ 准备 session 文件
https://my.telegram.org/auth?to=apps
需要家宽申请tg的api
得到api_id = 123456
api_hash = "159e5sdfdsfsfsdfsafs" 保存好以后有用
vps上建个login_xxx.py文件
from telethon import TelegramClient
api_id = 123456
api_hash = "159e5sdfdsfsfsdfsafs"
phone = "+号码"
client = TelegramClient(f"session_{phone}", api_id, api_hash)
client.start(phone) # 输入验证码(发到官方 Telegram 客户端)
print(f"{phone} ✅ 登录成功")
client.disconnect()
4️⃣ 创建签到脚本 multi_checkin.py
路径建议:/root/multi_checkin.py
运行
python ~/login_xxx.py
手机端或电脑端接受登录码,也就是是用py脚本登陆
生成session_xxxxxxx.session 文件,保存好,下次登陆无需登录码,换个vps也可用
import asyncio
from telethon import TelegramClient
from datetime import datetime
import os
# 账号配置示例
accounts = [
{
"session": "./tg_sessions/session_+1111111111",
"api_id": 123456,
"api_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"session": "./tg_sessions/session_+2222222222",
"api_id": 234567,
"api_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
}
]
# 机器人和对应签到命令示例
bots_to_checkin = {
"ExampleBot1": "/checkin",
"ExampleBot2": "/sign"
}
log_file = "./checkin.log"
def write_log(msg: str):
with open(log_file, "a", encoding="utf-8") as f:
f.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - {msg}\n")
async def checkin_all(client):
for bot, cmd in bots_to_checkin.items():
try:
await client.send_message(bot, cmd)
await asyncio.sleep(3) # 等机器人回复
messages = await client.get_messages(bot, limit=1)
if messages:
msg = f"{client.session.filename} 对 {bot} 签到结果: {messages[0].text}"
print(f"✅ {msg}")
write_log(msg)
else:
msg = f"{client.session.filename} 对 {bot} 未收到签到回复"
print(f"❌ {msg}")
write_log(msg)
except Exception as e:
msg = f"{client.session.filename} 对 {bot} 签到失败: {e}"
print(f"❌ {msg}")
write_log(msg)
await asyncio.sleep(3) # 每个机器人间隔 3 秒
async def main():
for acc in accounts:
client = TelegramClient(acc["session"], acc["api_id"], acc["api_hash"])
await client.start()
if await client.is_user_authorized():
await checkin_all(client)
print("⏳ 等待120秒后签到下一个账号…")
await asyncio.sleep(120) # 账号间隔 120 秒
else:
msg = f"{acc['session']} 未登录,需要重新生成 session"
print(f"⚠️ {msg}")
write_log(msg)
await client.disconnect()
if __name__ == "__main__":
os.makedirs(os.path.dirname(log_file), exist_ok=True)
asyncio.run(main())
5️⃣ 测试运行
source ~/tg_env/bin/activate
python ~/multi_checkin.py
检查是否顺利签到所有账号和机器人
查看日志:
tail -f /root/checkin.log
6️⃣ 配置 Cron 定时任务
crontab -e
添加每天 22:43 自动签到:
43 22 * * * bash -c "source /root/tg_env/bin/activate && python /root/multi_checkin.py >> /root/checkin_cron.log 2>&1"
日志会写入 /root/checkin_cron.log
脚本内账号或机器人更新,无需修改 cron。
7️⃣ 注意事项
Session 文件:每个账号必须有对应 session,否则需要重新生成
机器人名字:字典键不需要 @,值是签到命令
日志:签到结果和异常都会记录到 checkin.log
间隔:账号间隔 120 秒,机器人间隔 3 秒
扩展:增加机器人只需在 bots_to_checkin 添加键值对