'Unable to call Uniswap to add liquidity function

Will someone help me restructure this contract? I can't use the addLP function. I think there is something wrong with my code, but I don't know what. I'm a novice.

from vyper.interfaces import ERC20


UNISWAP: constant(address) = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
SUSD: constant(address) = 0x970C963166351B901c642B8CB49920536C3127e6
WETH: constant(address) = 0xc778417E063141139Fce010982780140Aa0cD5Ab

@external
@payable
def addLP(amountTokenDes: uint256):
    ERC20(SUSD).transferFrom(msg.sender, self, amountTokenDes)
    ERC20(SUSD).approve(UNISWAP, amountTokenDes)

    res: Bytes[128] = raw_call(
        UNISWAP,
        concat(
        method_id("addLiquidityETH(address,uint256,uint256,uint256,address,uint256)"),
        convert(SUSD, bytes32),
        convert(amountTokenDes, bytes32),
        convert(amountTokenDes * 995 / 1000, bytes32),
        convert(msg.value * 995 / 1000, bytes32),
        convert(self, bytes32),
        convert(block.timestamp, bytes32),
        ),
        max_outsize=128,
        gas=msg.gas,
        value=msg.value,
    )

I tried to use the addLP function, but it didn't work.

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?

execution reverted



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source