You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python调用TeleBot无法通过file_id发送频道图片的问题

解决TeleBot发送频道头像报错"Bad Request: type of file mismatch"的问题

Got it,这个问题我之前也碰到过!核心原因是Telegram API的规则更新了:你从get_chat拿到的频道头像big_file_id属于聊天资料类文件,而send_photo接口只认媒体消息类文件的file_id,直接复用就会触发类型不匹配的报错。

下面给你两种靠谱的解决方案:

方案一:先下载头像再发送本地文件(最稳妥)

绕开file_id类型限制的最简单办法,就是先把频道头像下载到本地,再以本地文件的形式发送。代码示例如下:

import telebot
import os

# 初始化Bot
bot = telebot.TeleBot("你的Bot Token")
my_chat_id = "你的个人聊天ID(可以用@getidsbot快速获取)"

# 获取频道头像的file_id
chat_info = bot.get_chat('@codygarbrandt_best')
avatar_file_id = chat_info.photo.big_file_id

# 下载头像文件
file_info = bot.get_file(avatar_file_id)
downloaded_avatar = bot.download_file(file_info.file_path)

# 临时保存到本地
temp_file_path = "temp_channel_avatar.jpg"
with open(temp_file_path, 'wb') as f:
    f.write(downloaded_avatar)

# 发送本地图片
with open(temp_file_path, 'rb') as photo_file:
    bot.send_photo(my_chat_id, photo_file)

# 可选:清理临时文件
os.remove(temp_file_path)

方案二:升级依赖并检查权限

先确保你用的是最新版的pyTelegramBotAPI,旧版本可能没适配Telegram的新规则:

pip install --upgrade pyTelegramBotAPI

另外要确认你的Bot已经加入了目标频道(如果是私有频道的话),没有权限也可能导致类似的报错哦。

小提示

如果需要频繁发送这个频道的头像,可以把下载后的文件缓存起来,不用每次都重新下载,能节省不少时间和带宽。

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

火山引擎 最新活动