引言
Telegram以其强大的开放性和API接口,成为自动化通讯的首选平台。其中,机器人定时消息功能在群管理、内容推送、提醒通知等场景中极为实用。本文将教你如何从零开始,编写一个属于自己的定时消息机器人,让你彻底告别手动发送的繁琐。
准备工作:创建你的Telegram机器人
在编写代码之前,你需要先通过官方BotFather获取一个机器人令牌。这是所有Telegram机器人开发的基础。
- 在Telegram中搜索@BotFather并启动对话。
- 发送指令
/newbot,按提示输入机器人名称和用户名。 - 创建成功后,BotFather会发送一个形如
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11的HTTP API令牌,请务必保存好。
方法一:使用Telethon实现定时消息
Telethon是一个基于Python的Telegram客户端库,支持MTProto协议,非常适合编写定时消息脚本。下面是一段完整示例代码。
安装Telethon
pip install telethon编写定时发送脚本
以下代码实现每天上午9点向指定聊天或频道发送一条文本消息。
import asyncio
from telethon import TelegramClient, events
from datetime import datetime
import schedule
api_id = 12345 # 你的api_id
api_hash = 'your_api_hash' # 你的api_hash
bot_token = '123456:ABC-DEF...' # 机器人令牌
client = TelegramClient('bot', api_id, api_hash).start(bot_token=bot_token)
target = '@my_channel' # 目标聊天或频道用户名
async def send_message():
# 发送消息
await client.send_message(target, '早上好!这是定时消息。')
print('消息已发送')
def job():
asyncio.get_event_loop().run_until_complete(send_message())
# 每天9点执行
schedule.every().day.at('09:00').do(job)
# 主循环
while True:
schedule.run_pending()
time.sleep(30)
你需要从 my.telegram.org 获取api_id和api_hash,并在代码中替换。
方法二:使用python-telegram-bot库定时发送
python-telegram-bot是一个更贴近机器人API的库,适合处理交互式命令。利用其JOBQUEUE特性,可以方便地实现定时任务。
安装python-telegram-bot
pip install python-telegram-bot==20.0使用JobQueue定时发送
from telegram import Bot
from telegram.ext import Application, CommandHandler
import asyncio
TOKEN = '123456:ABC-DEF...'
CHAT_ID = '@my_channel' # 或 -1001234567890
async def send_scheduled(context):
await context.bot.send_message(chat_id=CHAT_ID, text='定时消息:工作正常。')
async def start(update, context):
await update.message.reply_text('定时任务已启动!')
def main():
app = Application.builder().token(TOKEN).build()
# 添加命令处理器
app.add_handler(CommandHandler('start', start))
# 设置定时任务:每天9点
job_queue = app.job_queue
job_queue.run_daily(send_scheduled, time=datetime.time(9, 0))
app.run_polling()
if __name__ == '__main__':
main()
此方法更易扩展,可结合多个命令进行动态调度。
高级技巧:定时消息的灵活配置
上述代码只展示了最简单的定时发送。实际应用中,你还可以:
- 实现多时段发送:使用
run_daily或run_repeating设置多个时间点。 - 动态内容:从数据库或API获取内容,让消息更智能。
- 发送媒体文件:通过
send_photo、send_video等发送多媒体消息。 - 定时清理消息:利用机器人API删除已发送的失效消息。
安全注意事项
编写机器人时务必重视安全:
- 保护令牌:不要将API令牌提交到公开仓库或泄露给第三方。
- 权限最小化:只给予机器人必要的小组或频道权限。
- 防止滥用:设置速率限制,避免频繁调用导致封禁。
- 定期更新:及时更新依赖库,修补已知安全漏洞。
总结
通过本文的学习,你已经掌握了Telegram机器人定时消息的两种主流编写方法。无论是使用Telethon的灵活控制,还是python-telegram-bot的便捷调度,都能帮助你轻松实现定时推送。从简单的每日提醒到复杂的内容自动化,这些方法为你的Telegram群组和频道运营提供了强大的支持。快来动手实践吧!