如何在Telethon中设置每1分钟发送消息的提醒,能否使用currentime变量实现
Telethon 1分钟定时发消息实现方案
你提到的currentime(当前时间变量)完全可以实现该需求,下面分别给出基于时间变量的准点发送方案,和更简单的固定间隔发送方案:
方案1:基于当前时间变量的准点发送(对应用你提到的currentime逻辑)
该方案可以实现每到整分钟就发送消息,逻辑如下:
- 导入
time、asyncio和Telethon核心模块 - 初始化Telethon客户端并完成账号认证
- 循环内每次获取当前时间戳赋值给
current_time(即你提到的currentime变量),计算距离下一个整分钟的等待时长 - 等待结束后执行发送逻辑,循环往复
可运行代码示例:
import asyncio import time from telethon import TelegramClient # 替换为你自己的API参数,可在Telegram官方开发者平台申请 API_ID = 123456 API_HASH = '你的API_HASH值' PHONE_NUMBER = '你的账号绑定手机号' # 配置发送参数 TARGET_CHAT = '目标用户名/聊天ID/群组链接' SEND_CONTENT = '你要定时发送的指定消息内容' client = TelegramClient('session存储文件名', API_ID, API_HASH) async def timed_send(): await client.start(PHONE_NUMBER) while True: current_time = time.time() # 对应你提到的currentime变量 # 计算到下一个整分钟的等待秒数 wait_seconds = 60 - (current_time % 60) await asyncio.sleep(wait_seconds) # 执行消息发送 await client.send_message(TARGET_CHAT, SEND_CONTENT) # 可选:打印发送日志便于排查问题 print(f"消息已在{time.ctime()}发送成功") if __name__ == '__main__': asyncio.run(timed_send())
方案2:固定间隔1分钟发送(无需手动计算时间差)
如果你不需要严格对齐整分钟发送,只要求两次发送间隔1分钟,用更简洁的异步等待即可:
import asyncio from telethon import TelegramClient API_ID = 123456 API_HASH = '你的API_HASH值' PHONE_NUMBER = '你的账号绑定手机号' TARGET_CHAT = '目标用户名/聊天ID/群组链接' SEND_CONTENT = '你要定时发送的指定消息内容' client = TelegramClient('session存储文件名', API_ID, API_HASH) async def interval_send(): await client.start(PHONE_NUMBER) while True: await client.send_message(TARGET_CHAT, SEND_CONTENT) await asyncio.sleep(60) # 发送完成后等待60秒再执行下一次发送 if __name__ == '__main__': asyncio.run(interval_send())
注意事项
- 首次运行需要输入手机号收到的验证码完成账号登录,后续会自动读取本地session文件无需重复验证
- 必须使用
asyncio.sleep而不是同步的time.sleep,后者会阻塞Telethon的异步事件循环,导致客户端掉线、消息发送失败等问题 - 若发送目标为群组/频道,需要确认你的账号有对应聊天的发送权限,新账号频繁发送消息可能触发官方风控限制
内容的提问来源于stack exchange,提问作者Henok Belachew
相关产品推荐
相关产品推荐

