1212from dotenv import load_dotenv
1313load_dotenv ()
1414
15- __all__ : list [str ] = ("generate_image" , "validate_prompt" , "validate_dimensions" )
15+ __all__ : list [str ] = ("generate_image" , "validate_prompt" , "validate_dimensions" , "validate_model" )
16+
17+ ALLOWED_MODELS = {"flux" , "klein" , "klein-large" , "zimage" }
1618
1719
1820def validate_prompt (prompt ) -> None :
@@ -28,6 +30,14 @@ def validate_dimensions(width, height) -> None:
2830 raise DimensionTooSmallError (config .ui .error_messages ["dimension_too_small" ])
2931
3032
33+ def validate_model (model : str ) -> None :
34+ if model not in ALLOWED_MODELS :
35+ allowed = ", " .join (sorted (ALLOWED_MODELS ))
36+ raise APIError (
37+ f"Model '{ model } ' is not allowed. Only the following models are supported by this bot: { allowed } "
38+ )
39+
40+
3141async def generate_image (
3242 prompt : str = None ,
3343 width : int = config .image_generation .defaults .width ,
@@ -38,6 +48,7 @@ async def generate_image(
3848 nologo : bool = config .image_generation .defaults .nologo ,
3949 enhance : bool = config .image_generation .defaults .enhance ,
4050 private : bool = config .image_generation .defaults .private ,
51+ seed : int = random .randint (0 , 2 ** 31 - 1 ),
4152 ** kwargs ,
4253):
4354 if not model :
@@ -46,7 +57,7 @@ async def generate_image(
4657 else :
4758 model = config .image_generation .fallback_model
4859
49- seed = str ( random . randint ( 0 , 1000000000 ) )
60+ validate_model ( model )
5061 url : str = f"https://gen.pollinations.ai/image/{ quote (prompt )} ?seed={ seed } &width={ width } &height={ height } &model={ model } &safe={ str (safe ).lower ()} &nologo={ str (nologo ).lower ()} &enhance={ str (enhance ).lower ()} &nofeed={ str (private ).lower ()} &referer={ quote (config .image_generation .referer )} "
5162 dic = {
5263 "prompt" : prompt ,
0 commit comments