mirror of https://github.com/coddrago/Heroku
1.3.0
- Automatically react to module post in developer's channel if possiblepull/1/head
parent
dfa46a0cc2
commit
b4d1ef7db1
|
@ -29,6 +29,7 @@
|
|||
- Add support for :obj:`aiogram.types.Message` in `utils.get_chat_id`
|
||||
- Add human-readable error message when trying to unload core module
|
||||
- Replace `print` with `logging.info` in main script to make url visible in logs
|
||||
- Automatically react to module post in developer's channel if possible
|
||||
|
||||
## 🌑 Hikka 1.2.12
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ class HikkaInfoMod(loader.Module):
|
|||
"version": "Version",
|
||||
"build": "Build",
|
||||
"prefix": "Prefix",
|
||||
"prefix": "Uptime",
|
||||
"uptime": "Uptime",
|
||||
"send_info": "Send userbot info",
|
||||
"description": "ℹ This will not compromise any sensitive info",
|
||||
"up-to-date": "<b>😌 Up-to-date</b>",
|
||||
|
@ -48,7 +48,7 @@ class HikkaInfoMod(loader.Module):
|
|||
"version": "Версия",
|
||||
"build": "Сборка",
|
||||
"prefix": "Префикс",
|
||||
"prefix": "Аптайм",
|
||||
"uptime": "Аптайм",
|
||||
"send_info": "Отправить информацию о юзерботе",
|
||||
"description": "ℹ Это не раскроет никакой личной информации",
|
||||
"_ihandle_doc_info": "Отправить информацию о юзерботе",
|
||||
|
|
|
@ -319,6 +319,29 @@ class LoaderMod(loader.Module):
|
|||
|
||||
asyncio.ensure_future(self._update_modules())
|
||||
asyncio.ensure_future(self.get_repo_list("full"))
|
||||
self._react_queue = []
|
||||
|
||||
@loader.loop(interval=30, autostart=True)
|
||||
async def _react_processor(self):
|
||||
if not self._react_queue:
|
||||
return
|
||||
|
||||
developer_entity, modname = self._react_queue.pop(0)
|
||||
try:
|
||||
await (
|
||||
await self._client.get_messages(
|
||||
developer_entity, limit=1, search=modname
|
||||
)
|
||||
)[0].react("❤️")
|
||||
self.set(
|
||||
"reacted",
|
||||
self.get("reacted", []) + [f"{developer_entity.id}/{modname}"],
|
||||
)
|
||||
except Exception:
|
||||
logger.debug(
|
||||
f"Unable to react to {developer_entity.id} about {modname}",
|
||||
exc_info=True,
|
||||
)
|
||||
|
||||
@loader.loop(interval=3, wait_before=True, autostart=True)
|
||||
async def _config_autosaver(self):
|
||||
|
@ -1002,14 +1025,33 @@ class LoaderMod(loader.Module):
|
|||
if cmd in instance.commands:
|
||||
self.allmodules.add_alias(alias, cmd)
|
||||
|
||||
if message is None:
|
||||
return
|
||||
|
||||
try:
|
||||
modname = instance.strings("name")
|
||||
except KeyError:
|
||||
modname = getattr(instance, "name", "ERROR")
|
||||
|
||||
try:
|
||||
if developer in self._client._hikka_cache and getattr(
|
||||
await self._client.get_entity(developer), "left", True
|
||||
):
|
||||
developer_entity = await self._client.force_get_entity(developer)
|
||||
else:
|
||||
developer_entity = await self._client.get_entity(developer)
|
||||
except Exception:
|
||||
developer_entity = None
|
||||
|
||||
if not isinstance(developer_entity, Channel):
|
||||
developer_entity = None
|
||||
|
||||
if (
|
||||
developer_entity is not None
|
||||
and f"{developer_entity.id}/{modname}" not in self.get("reacted", [])
|
||||
):
|
||||
self._react_queue += [(developer_entity, modname)]
|
||||
|
||||
if message is None:
|
||||
return
|
||||
|
||||
modhelp = ""
|
||||
|
||||
if instance.__doc__:
|
||||
|
@ -1053,20 +1095,8 @@ class LoaderMod(loader.Module):
|
|||
if developer.startswith("@") and developer not in self.get(
|
||||
"do_not_subscribe", []
|
||||
):
|
||||
try:
|
||||
if developer in self._client._hikka_cache and getattr(
|
||||
await self._client.get_entity(developer), "left", True
|
||||
):
|
||||
developer_entity = await self._client.force_get_entity(
|
||||
developer
|
||||
)
|
||||
else:
|
||||
developer_entity = await self._client.get_entity(developer)
|
||||
except Exception:
|
||||
developer_entity = None
|
||||
|
||||
if (
|
||||
isinstance(developer_entity, Channel)
|
||||
developer_entity
|
||||
and getattr(developer_entity, "left", True)
|
||||
and self._db.get(main.__name__, "suggest_subscribe", True)
|
||||
):
|
||||
|
@ -1094,17 +1124,9 @@ class LoaderMod(loader.Module):
|
|||
},
|
||||
]
|
||||
|
||||
try:
|
||||
is_channel = isinstance(
|
||||
await self._client.get_entity(developer),
|
||||
Channel,
|
||||
)
|
||||
except Exception:
|
||||
is_channel = False
|
||||
|
||||
developer = self.strings("developer").format(
|
||||
utils.escape_html(developer)
|
||||
if is_channel
|
||||
if isinstance(developer_entity, Channel)
|
||||
else f"<code>{utils.escape_html(developer)}</code>"
|
||||
)
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue