【问题标题】:How to send telegram mediaGroup with caption/text如何发送带有标题/文本的电报 mediaGroup
【发布时间】:2020-03-12 13:23:52
【问题描述】:

我目前正在使用python-telegram-bot,基本上我想用它实现的是发送这样的电报消息:

因此,消息由 2 张以上的照片/视频组成,下方带有文本消息。

我已经尝试过的:

  1. 使用send_message方法发送消息,并包含照片URL,但它只显示文字下方的1张图片

  2. 使用send_media_group发送媒体组,但是这个方法没有caption参数作为send_photo

【问题讨论】:

    标签: python telegram telegram-bot python-telegram-bot


    【解决方案1】:

    send_media_group 有效,但必须在创建 media_group 时添加标题,并且仅添加到第一张图像。假设我们有三个图像img0.pngimg1.pngimg2.png,我们使用InputMediaPhoto 将它们添加到media_group,参数caption 等于我们只想为第一张图像发送的文本,否则我们设置caption 等于''

    import telegram
    from telegram import InputMediaPhoto
    
    TOKEN = '' # token to access the HTTP API of your bot created with @BotFather
    CHANNEL_ID = '' # id of your channel, for example @durov
    bot = telegram.Bot(token = TOKEN)
    media_group = []
    text = 'some caption for album'
    for num in range(3):
        media_group.append(InputMediaPhoto(open('img%d.png' % num, 'rb'), 
                                           caption = text if num == 0 else ''))
    bot.send_media_group(chat_id = CHANNEL_ID, media = media_group)
    

    【讨论】:

    • 是的,您的示例代码有效
    【解决方案2】:

    您应该使用sendMediaGroup,您可以在其中指定media 字段和photo/video 对象的数组,但诀窍是只为第一个元素设置caption 属性数组。在这种情况下,电报将在媒体内容下方显示该标题。

    如果您要为多个元素电报指定标题,则仅当您分别单击每张照片的照片预览时才会显示它们。

    【讨论】:

    • 非常感谢,它确实有效!但是为什么没有在任何地方提到它呢??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2020-12-17
    • 2017-12-05
    相关资源
    最近更新 更多