【问题标题】:how to send photo by telegram bot using multipart/form-data如何使用 multipart/form-data 通过电报机器人发送照片
【发布时间】:2017-10-13 14:55:22
【问题描述】:

我有一个电报机器人(用 python 开发),我想通过它从我计算机中的图像中发送/上传照片

所以我应该通过多部分表单数据来做到这一点。

但我不知道该怎么做。我也没有在 Internet 和电报文档上找到有用的资源。

我试图通过下面的代码来做到这一点。但这是错误的

data = {'chat_id', chat_id}
files = {'photo': open("./saved/{}.jpg".format(user_id), 'rb')}
status = requests.post("https://api.telegram.org/bot<TOKEN>/sendPhoto", data=data, files=files)

谁能帮帮我?

【问题讨论】:

    标签: python telegram multipartform-data python-telegram-bot


    【解决方案1】:

    aiogram python 框架已经解决了你的问题。

    这是完整的示例。只需编辑 TOKEN 和 PHOTO_PATH,运行代码并将 /photo 命令发送到机器人 :)

    from aiogram import Bot, Dispatcher, executor
    from aiogram.types import InputFile, Message
    
    TOKEN = "YourBotToken"
    PHOTO_PATH = "img/photo.png"
    
    bot = Bot(TOKEN)
    dp = Dispatcher(bot)
    
    
    @dp.message_handler(commands=["photo"])
    async def your_command_handler(message: Message):
        photo = InputFile(PHOTO_PATH)
        await message.answer_photo(photo)
    
    
    if __name__ == '__main__':
        executor.start_polling(dp)
    
    

    【讨论】:

      【解决方案2】:

      DelimitryPyae Hlian Moe 的两个答案在它们工作的意义上都是正确的,但都没有解决您提供的代码的实际问题。

      问题是data被定义为:

      data = {'chat_id', chat_id}
      

      这是一个集合(不是字典),有两个值:一个字符串'chat_id'chat_id的内容,而不是

      data = {'chat_id' : chat_id}
      

      这是一个带有键的字典:字符串'chat_id'和存储在chat_id中的对应值。

      chat_id 可以定义为 url 的一部分,但同样地,您的原始代码也应该可以工作 - 将数据和文件定义为 requests.post() 的参数 - 只要 datafiles 变量都是字典.

      【讨论】:

      • 如何将files 定义为 url 的一部分而不是参数?
      【解决方案3】:

      你需要在URL中传递chat_id参数:

      files = {'photo': open('./saved/{}.jpg'.format(user_id), 'rb')}
      status = requests.post('https://api.telegram.org/bot<TOKEN>/sendPhoto?chat_id={}'.format(chat_id), files=files)
      

      【讨论】:

        【解决方案4】:

        试试这行代码

        status = requests.post("https://api.telegram.org/bot<TOKEN>/sendPhoto?chat_id=" + data['chat_id'], files=files)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          • 2016-08-15
          • 2016-07-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多