Telegram昵称自动更新教程:让昵称显示实时时间(Telethon脚本

Telegram昵称自动更新教程:让昵称显示实时时间(Telethon脚本

教你使用Python + Telethon编写脚本,让Telegram昵称自动显示当前时间(精确到分钟),每分钟更新两次,退出时自动恢复原始昵称。附完整代码和详细使用步骤。

一、准备工作

1. 获取 Telegram API 凭证

  1. 访问 https://my.telegram.org/apps 并登录。
  2. 如果还没有应用,填写22928445和 8265f5dfaf0d71acefba05854c931938
  3. 记录下 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
喜欢就支持一下吧
点赞13 分享
tianwei的头像-幸福111
评论 抢沙发

请登录后发表评论

    暂无评论内容