@@ -2073,48 +2073,56 @@ def to_dic(self):
20732073
20742074# InputMedia
20752075
2076- class InputMediaPhoto (JsonSerializable ):
2077- def __init__ (self , media , caption = None , parse_mode = None ):
2078- self .type = "photo"
2076+ class InputMedia (JsonSerializable ):
2077+ def __init__ (self , type , media , caption = None , parse_mode = None ):
2078+ self .type = type
20792079 self .media = media
20802080 self .caption = caption
20812081 self .parse_mode = parse_mode
20822082
2083+ self ._media_dic = 'attach://' + util .generate_random_token () if not util .is_string (self .media ) else self .media
2084+
20832085 def to_json (self ):
20842086 return json .dumps (self .to_dic ())
20852087
20862088 def to_dic (self ):
2087- ret = {'type' : self .type , 'media' : 'attach://' + util .generate_random_token ()
2088- if not util .is_string (self .media ) else self .media }
2089+ ret = {'type' : self .type , 'media' : self ._media_dic }
20892090 if self .caption :
20902091 ret ['caption' ] = self .caption
20912092 if self .parse_mode :
20922093 ret ['parse_mode' ] = self .parse_mode
20932094 return ret
20942095
2096+ def _convert_input_media (self ):
2097+ if util .is_string (self .media ):
2098+ return self .to_json (), None
2099+
2100+ return self .to_json (), {self ._media_dic : self .media }
2101+
2102+
2103+ class InputMediaPhoto (InputMedia ):
2104+ def __init__ (self , media , caption = None , parse_mode = None ):
2105+ super (InputMedia ).__init__ (type = "photo" , media = media , caption = caption , parse_mode = parse_mode )
2106+
2107+ def to_dic (self ):
2108+ ret = super (InputMedia ).to_dic ()
2109+ return ret
2110+
20952111
2096- class InputMediaVideo (JsonSerializable ):
2097- def __init__ (self , media , caption = None , parse_mode = None , width = None , height = None , duration = None ,
2112+ class InputMediaVideo (InputMedia ):
2113+ def __init__ (self , media , thumb = None , caption = None , parse_mode = None , width = None , height = None , duration = None ,
20982114 supports_streaming = None ):
2099- self .type = "video"
2100- self .media = media
2101- self .caption = caption
2102- self .parse_mode = parse_mode
2115+ super (InputMedia ).__init__ (type = "video" , media = media , caption = caption , parse_mode = parse_mode )
2116+ self .thumb = thumb
21032117 self .width = width
21042118 self .height = height
21052119 self .duration = duration
21062120 self .supports_streaming = supports_streaming
21072121
2108- def to_json (self ):
2109- return json .dumps (self .to_dic ())
2110-
21112122 def to_dic (self ):
2112- ret = {'type' : self .type , 'media' : 'attach://' + util .generate_random_token ()
2113- if not util .is_string (self .media ) else self .media }
2114- if self .caption :
2115- ret ['caption' ] = self .caption
2116- if self .parse_mode :
2117- ret ['parse_mode' ] = self .parse_mode
2123+ ret = super (InputMedia ).to_dic ()
2124+ if self .thumb :
2125+ ret ['thumb' ] = self .thumb
21182126 if self .width :
21192127 ret ['width' ] = self .width
21202128 if self .height :
@@ -2124,3 +2132,57 @@ def to_dic(self):
21242132 if self .supports_streaming :
21252133 ret ['supports_streaming' ] = self .supports_streaming
21262134 return ret
2135+
2136+
2137+ class InputMediaAnimation (InputMedia ):
2138+ def __init__ (self , media , thumb = None , caption = None , parse_mode = None , width = None , height = None , duration = None ):
2139+ super (InputMedia ).__init__ (type = "animation" , media = media , caption = caption , parse_mode = parse_mode )
2140+ self .thumb = thumb
2141+ self .width = width
2142+ self .height = height
2143+ self .duration = duration
2144+
2145+ def to_dic (self ):
2146+ ret = super (InputMedia ).to_dic ()
2147+ if self .thumb :
2148+ ret ['thumb' ] = self .thumb
2149+ if self .width :
2150+ ret ['width' ] = self .width
2151+ if self .height :
2152+ ret ['height' ] = self .height
2153+ if self .duration :
2154+ ret ['duration' ] = self .duration
2155+ return ret
2156+
2157+
2158+ class InputMediaAudio (InputMedia ):
2159+ def __init__ (self , media , thumb = None , caption = None , parse_mode = None , duration = None , performer = None , title = None ):
2160+ super (InputMedia ).__init__ (type = "audio" , media = media , caption = caption , parse_mode = parse_mode )
2161+ self .thumb = thumb
2162+ self .duration = duration
2163+ self .performer = performer
2164+ self .title = title
2165+
2166+ def to_dic (self ):
2167+ ret = super (InputMedia ).to_dic ()
2168+ if self .thumb :
2169+ ret ['thumb' ] = self .thumb
2170+ if self .duration :
2171+ ret ['duration' ] = self .duration
2172+ if self .performer :
2173+ ret ['performer' ] = self .performer
2174+ if self .title :
2175+ ret ['title' ] = self .title
2176+ return ret
2177+
2178+
2179+ class InputMediaDocument (InputMedia ):
2180+ def __init__ (self , media , thumb = None , caption = None , parse_mode = None ):
2181+ super (InputMedia ).__init__ (type = "document" , media = media , caption = caption , parse_mode = parse_mode )
2182+ self .thumb = thumb
2183+
2184+ def to_dic (self ):
2185+ ret = super (InputMedia ).to_dic ()
2186+ if self .thumb :
2187+ ret ['thumb' ] = self .thumb
2188+ return ret
0 commit comments