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)
解决方案
- 替换
send_file为send_message:send_file处理相册(群组媒体)时,buttons参数不生效,而send_message支持为相册附加Inline按钮 - 提取媒体对象列表:不能直接将
event.messages传给文件参数,需提取每个消息的media属性组成列表,作为send_message的media参数 - 传递按钮参数:将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
相关产品推荐
相关产品推荐

