You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python脚本实现向Telegram多个聊天ID及群组发送消息

Telegram Bot批量向多聊天/群组发消息的修改方案

你现有脚本除了不支持批量发送外,还存在URL拼接错误、参数硬编码、无异常处理的问题,按以下步骤调整即可实现批量发送:

核心调整点

  • 将单个chat_id字符串变量替换为目标ID列表,可同时存入个人聊天ID、群组ID、频道ID;注意群组/私有频道ID为-100开头的负数,需要提前将Bot拉入对应会话并授予发消息权限,公开群/频道可直接填写@格式的用户名。
  • 抽离单目标发消息的独立逻辑,不要手动硬拼URL参数,借助HTTP请求库自动处理文本转义、特殊字符编码,避免原脚本中引号错位、特殊字符截断参数的问题。
  • 遍历目标ID列表循环发起请求,添加基础异常捕获,单个ID发送失败(如用户拉黑Bot、Bot被移出群、ID填写错误)不会中断剩余消息的发送流程。

调整后可直接运行的代码

首先安装依赖:

pip install requests

完整脚本:

import requests
import time

# 基础配置
botToken = "替换为你自己的Bot Token"
# 所有需要接收消息的目标ID
target_chat_ids = [
    "123456789",          # 普通用户ID
    "-1001234567890",     # 私有群组/频道ID
    "@your_public_group"  # 公开群组/频道用户名
]

def send_to_single_chat(chat_id, send_text):
    api_addr = f"https://api.telegram.org/bot{botToken}/sendMessage"
    # 传参自动处理编码,不需要手动拼接URL
    req_params = {
        "chat_id": chat_id,
        "text": send_text,
        # 若需要发送Markdown格式消息,取消下一行注释即可
        # "parse_mode": "MarkdownV2"
    }
    try:
        resp = requests.post(api_addr, params=req_params, timeout=10)
        resp_data = resp.json()
        if resp_data.get("ok"):
            print(f"消息已成功发送至 {chat_id}")
            return True
        print(f"发送至 {chat_id} 失败,错误原因:{resp_data.get('description')}")
        return False
    except Exception as e:
        print(f"向 {chat_id} 发起请求失败:{str(e)}")
        return False

if __name__ == "__main__":
    # 这里替换为你要发送的实际内容,对应原脚本的files变量
    message_content = "需要批量发送的消息内容"
    for cid in target_chat_ids:
        send_to_single_chat(cid, message_content)
        # 目标数量多的时候加短延迟,避免触发Telegram接口限流
        time.sleep(0.3)

补充说明

如果需要发送图片、文件、音视频等非纯文本内容,只需要把接口地址从sendMessage换成对应的sendPhoto/sendDocument等接口,遍历ID批量发送的逻辑不需要改动。
不要手动拼接URL参数,手动拼接遇到文本包含&/?/空格/Emoji等内容时很容易出现参数解析错误,用请求库的参数传递能力可以自动规避这类问题。

内容的提问来源于stack exchange,提问作者rodskies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:12:31