教你使用Python + Telethon编写脚本,让Telegram昵称自动显示当前时间(精确到分钟),每分钟更新两次,退出时自动恢复原始昵称。附完整代码和详细使用步骤。
一、准备工作
1. 获取 Telegram API 凭证
- 访问 https://my.telegram.org/apps 并登录。
- 如果还没有应用,填写
22928445和。8265f5dfaf0d71acefba05854c931938 - 记录下
api_id和api_hash。
2. 安装 Python 环境
确保你的系统已安装python3.11。
准备工作如下
cd进入文件目录,创建虚拟环境 :
python3.11 -m venv venv
激活虚拟环境:
source venv/bin/activate
安装依赖库:
bash
pip install telethon
二、完整脚本代码
将以下代码保存为 tg_auto_name.py:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time
import os
import sys
import logging
import asyncio
import re
from telethon import TelegramClient
from telethon.tl.functions.account import UpdateProfileRequest
# === Telegram API 配置 ===
api_auth_file = 'api_auth'
if not os.path.exists(api_auth_file + '.session'):
api_id = int(input('api_id: '))
api_hash = input('api_hash: ')
else:
api_id = 22928445
api_hash = '8265f5dfaf0d71acefba05854c931938'
# 设置设备信息为苹果13 - 这些参数在创建客户端时传入即可
device_model = "iPhone 13"
system_version = "iOS 15.0"
app_version = "8.0.0"
lang_code = "zh-CN"
system_lang_code = "zh-CN"
# 创建客户端时直接设置设备信息 [citation:1][citation:3]
client1 = TelegramClient(
api_auth_file,
api_id,
api_hash,
device_model=device_model,
system_version=system_version,
app_version=app_version,
lang_code=lang_code,
system_lang_code=system_lang_code
)
# === 日志配置 ===
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
original_first_name = None
original_last_name = None
# 匹配末尾的时间格式:2025-07-18 20:40
time_pattern = re.compile(r'\s*\d{4}-\d{2}-\d{2} \d{2}:\d{2}$')
async def change_name_auto():
global original_first_name, original_last_name
print('will change name')
# 初始记录原始昵称
me = await client1.get_me()
original_first_name = me.first_name or ''
original_last_name = me.last_name or ''
while True:
try:
now = time.localtime()
year = now.tm_year
month = f"{now.tm_mon:02d}"
day = f"{now.tm_mday:02d}"
hour = f"{now.tm_hour:02d}"
minute = f"{now.tm_min:02d}"
second = f"{now.tm_sec:02d}"
if second == '00' or second == '30':
me = await client1.get_me()
current_first_name = me.first_name or ''
clean_name = re.sub(time_pattern, '', current_first_name).strip()
new_first_name = f"{clean_name} {year}-{month}-{day} {hour}:{minute}"
await client1(UpdateProfileRequest(first_name=new_first_name, last_name=""))
logger.info(f'Updated -> {new_first_name}')
except KeyboardInterrupt:
print('\nResetting name...\n')
await client1(UpdateProfileRequest(
first_name=original_first_name,
last_name=original_last_name
))
sys.exit()
except Exception as e:
print(f'{type(e)}: {e}')
await asyncio.sleep(1)
async def main(loop):
await client1.start()
print('设备信息已设置为: iPhone 13')
print('creating task')
task = loop.create_task(change_name_auto())
await task
task.cancel()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
最后运行tg_auto_name.py就可以了
python3 tg_auto_name.py
如需后台运行 nohup python3 tg_auto_name.py
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容