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

如何将Telegram机器人添加到非本人拥有的频道?

Telegram机器人无法添加到非本人频道的解决方案

问题描述

我开发了一款Telegram机器人,可抓取频道帖子并翻译后发送至另一频道。目前该机器人在我自己的两个频道可正常运行,但无法将其添加到非本人拥有的频道,尝试了所有已知方法仍未找到解决方案。

实现代码

from aiogram import executor, types, Dispatcher, Bot 
import logging 
from translate import Translator 
import data 

 
logging.basicConfig(level=logging.INFO) 

bot = Bot(token= data.TOKEN) 

dp = Dispatcher(bot) 

 
@dp.channel_post_handler(content_types= ['text', 'photo']) 
async def take_msg(msg: types.Message): 
    try: 
        text = msg.text 
        translator = Translator(to_lang='en', from_lang= 'autodetect') 
        translation = translator.translate(text) 

        if data.idd != str(msg.chat.id): 
            await bot.send_message(chat_id= data.idd, text= translation) 

    except: 
        if data.idd != str(msg.chat.id): 
            await bot.send_photo(data.idd, msg.photo[0].file_id) 


if __name__ == '__main__': 
    executor.start_polling(dp, skip_updates= False)

(注:代码中if name == '__main__'存在语法错误,已修正为if __name__ == '__main__')

解决步骤

  • 调整机器人隐私设置
    发送/setprivacy给@BotFather,选择你的机器人,将Group Privacy设置为Disable。关闭隐私模式后,机器人才能接收非私有频道的消息。

  • 确认添加权限与流程

    1. 必须由目标频道的管理员(拥有「管理频道」权限)操作添加,普通成员无法添加机器人。
    2. 添加时进入频道「管理员」设置页面,搜索机器人用户名,添加后分配至少「查看消息」和「发送消息」权限;如果需要处理媒体内容,额外勾选「上传照片/视频」等对应权限。
  • 代码优化建议

    1. 替换宽泛的异常捕获,改为捕获具体异常,便于排查问题:
      except AttributeError:  # 处理无text属性的消息(如仅图片)
          if data.idd != str(msg.chat.id):
              await bot.send_photo(data.idd, msg.photo[0].file_id)
      
    2. 当前代码硬编码了目标频道ID(data.idd),若要支持多场景转发,可添加命令让用户绑定目标频道,避免固定单一ID。
    3. 确保data.idd为字符串类型的频道ID(频道ID通常以-100开头),避免类型不匹配导致的逻辑错误。
  • Telegram规则限制
    机器人无法主动申请加入频道,必须由频道管理员手动添加;若目标频道为私有频道,需先将机器人添加为频道成员,再提升为管理员。

内容的提问来源于stack exchange,提问作者Сергій Кучинський

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:59:57