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

Telethon:如何无需转发发送带Inline按钮的相册?

问题:发送相册时Inline按钮不显示

场景与需求

  • 从群组转发消息并添加Inline按钮,文本消息和单个文件消息的按钮可正常显示,但处理相册时,使用send_file或send_message发送后按钮无法显示
  • 需实现:不使用forward方法,将相册发送至频道并附带Inline按钮

当前代码

from telethon.sync import TelegramClient
from telethon import events, Button


@bot.on(events.NewMessage(chats=gasket_group))
async def handler(event):
    message = event.message
    file = message.media
    if message.grouped_id:
        return
    button = Button.inline("Send")
    await bot.send_message(admin_target_group_id, message.message, file=message.media, buttons=button)


@bot.on(events.Album(chats=gasket_group))
async def album_resend_handler(event):
    print('messages from album_resend_handler:', event.messages)
    button = Button.inline("Send")
    files = event.messages
    text_message = event.messages[0].message
    await bot.send_file(admin_target_group_id, file=files, caption=text_message,allow_cache=True, buttons=button)
    # await bot.send_message(admin_target_group_id, event.messages[0].message, file=files, buttons=button)

解决方案

  1. 替换send_file为send_message:send_file处理相册(群组媒体)时,buttons参数不生效,而send_message支持为相册附加Inline按钮
  2. 提取媒体对象列表:不能直接将event.messages传给文件参数,需提取每个消息的media属性组成列表,作为send_message的media参数
  3. 传递按钮参数:将Inline按钮直接传入send_message的buttons参数即可

修改后的代码

from telethon.sync import TelegramClient
from telethon import events, Button


@bot.on(events.NewMessage(chats=gasket_group))
async def handler(event):
    message = event.message
    file = message.media
    if message.grouped_id:
        return
    button = Button.inline("Send")
    await bot.send_message(admin_target_group_id, message.message, file=message.media, buttons=button)


@bot.on(events.Album(chats=gasket_group))
async def album_resend_handler(event):
    button = Button.inline("Send")
    # 提取相册中所有消息的媒体对象
    media_list = [msg.media for msg in event.messages]
    # 使用第一条消息的文本作为相册的caption
    caption = event.messages[0].message
    # 用send_message发送相册并附带按钮
    await bot.send_message(admin_target_group_id, caption, media=media_list, buttons=button)

说明

  • 相册的Inline按钮会附加到相册的第一条消息下方,整个相册组会保持关联状态
  • 确保admin_target_group_id是有效的频道/群组ID,且机器人拥有发送消息和媒体的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:42:36