mirror of
https://github.com/TeamPGM/PagerMaid-Pyro.git
synced 2024-11-25 11:58:20 +00:00
22 lines
736 B
Python
22 lines
736 B
Python
|
import inspect
|
||
|
import pagermaid.enums as enums
|
||
|
import pagermaid.services as services
|
||
|
from typing import Dict, Optional
|
||
|
|
||
|
|
||
|
def inject(message: enums.Message, function, **data) -> Optional[Dict]:
|
||
|
try:
|
||
|
signature = inspect.signature(function)
|
||
|
except Exception:
|
||
|
return None
|
||
|
for parameter_name, parameter in signature.parameters.items():
|
||
|
class_name = parameter.annotation.__name__
|
||
|
param = message if class_name == "Message" else services.get(class_name)
|
||
|
if not param:
|
||
|
if parameter_name == "message":
|
||
|
param = message
|
||
|
else:
|
||
|
param = services.get(parameter_name.capitalize())
|
||
|
data.setdefault(parameter_name, param)
|
||
|
return data
|