2022-07-02 11:44:57 +00:00
|
|
|
"""
|
|
|
|
pyromod - A monkeypatcher add-on for Pyrogram
|
|
|
|
Copyright (C) 2020 Cezar H. <https://github.com/usernein>
|
|
|
|
|
|
|
|
This file is part of pyromod.
|
|
|
|
|
|
|
|
pyromod is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
pyromod is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with pyromod. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def patch(obj):
|
|
|
|
def is_patchable(item):
|
2023-09-11 13:05:50 +00:00
|
|
|
return getattr(item[1], "patchable", False)
|
2022-07-02 11:44:57 +00:00
|
|
|
|
|
|
|
def wrapper(container):
|
|
|
|
for name, func in filter(is_patchable, container.__dict__.items()):
|
|
|
|
old = getattr(obj, name, None)
|
2023-09-11 13:05:50 +00:00
|
|
|
setattr(obj, f"old{name}", old)
|
2022-07-02 11:44:57 +00:00
|
|
|
setattr(obj, name, func)
|
|
|
|
return container
|
|
|
|
|
|
|
|
return wrapper
|
|
|
|
|
|
|
|
|
|
|
|
def patchable(func):
|
|
|
|
func.patchable = True
|
|
|
|
return func
|